Internet becomes unresponsive when torrent client enabled despite plenty of resources still available on router

What could explain my entire household internet becoming unresponsive when starting a headless torrent client with many seeding torrents?

As you can see here the ICMP Drop Rate is 100% till I stop the torrent daemon. And quite quickly then, things start working again.

Yet across temps, RAM, load, CPU Utilization, and Conntrack, nothing is even close to its maximum:

I've done a lot of searching and reading through these forums, and the closest thread is: Torrents causing conntrack table to overflow but still does not apply because I'm barely over 10% of my conntrack usage.

Any suggestions on what avenues to pursue to make any progress on understanding what's going on?

Looks like a case for sqm?

Please connect to your OpenWrt device using ssh and copy the output of the following commands and post it here using the "Preformatted text </> " button:
grafik
Remember to redact passwords, MAC addresses and any public IP addresses you may have:

ubus call system board
cat /etc/config/network
cat /etc/config/wireless
cat /etc/config/dhcp
cat /etc/config/firewall

Worth noting that I do have sqm enabled with fq_codel + simple. However, the results are the same with or without SQM enabled, and there is hardly any traffic moving, the seeding torrents are mostly just sitting there.

May be able to post my redacted config later.

Is this an ISP throttling scenario? Can you create heavy load that isn't torrenting?

2 Likes

Sounds like an ISP throttling maximum connections per subscriber to me too. They tend to do this kinda restrictions for the sake of CGNAT.

1 Like

Check here - it generates http load and measures latency increases
https://www.waveform.com/tools/bufferbloat
IF latency increase is observed here you need SqM, if not run torrent limiting to 1000...2000....3000 connections and check if problems introduce solely depending on connection numbers.

1 Like

I'm very new to openwrt and just setup this router a couple of days ago and I'm noticing a similar issue but with downloading not seeding.

My ISP never did this before the new router installation, and Blufferbloat gave me an A+ rating (with a PC VPN on) so it has to be the router throttling and crashing the connection for some reason.

It even happens late at night when all other devices are sleeping. The Firewall's SYN-flood protection is enabled, could that be it?

Memory Available is 55%, 0% Buffered and 10% Cached. Disk space used is 6% and Temp space used is 15%.

Here is the ssh output:

root@OpenWrt:~# ubus call system board
{
        "kernel": "6.6.73",
        "hostname": "OpenWrt",
        "system": "ARMv8 Processor rev 4",
        "model": "GL.iNet GL-MT6000",
        "board_name": "glinet,gl-mt6000",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "24.10.0",
                "revision": "r28427-6df0e3d02a",
                "target": "mediatek/filogic",
                "description": "OpenWrt 24.10.0 r28427-6df0e3d02a",
                "builddate": "1738624177"
        }
}
root@OpenWrt:~# cat /etc/config/network

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd2b:995c:da87::/48'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'lan1'
        list ports 'lan2'
        list ports 'lan3'
        list ports 'lan4'
        list ports 'lan5'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wan'
        option device 'eth1'
        option proto 'dhcp'
        option type 'bridge'

config interface 'wan6'
        option device 'eth1'
        option proto 'dhcpv6'

root@OpenWrt:~# cat /etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option path 'platform/soc/18000000.wifi'
        option band '2g'
        option channel 'auto'
        option htmode 'HE20'
        option txpower '33'
        option country '[redacted]'
        option cell_density '0'

config wifi-device 'radio1'
        option type 'mac80211'
        option path 'platform/soc/18000000.wifi+1'
        option band '5g'
        option channel '36'
        option htmode 'HE80'
        option disabled '1'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option ssid 'OpenWrt'
        option encryption 'none'

config wifi-iface 'wifinet3'
        option device 'radio0'
        option mode 'ap'
        option ssid '[redacted]'
        option encryption 'psk2'
        option key '[redacted]'
        option network 'lan'

root@OpenWrt:~# cat /etc/config/dhcp

config dnsmasq
        option domainneeded '1'
        option localise_queries '1'
        option rebind_protection '1'
        option rebind_localhost '1'
        option local '/lan/'
        option domain 'lan'
        option expandhosts '1'
        option cachesize '0'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases'
        option localservice '1'
        option ednspacket_max '1232'
        option port '54'
        option noresolv '1'

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option dhcpv4 'server'
        option dhcpv6 'server'
        option ra 'server'
        option ra_slaac '1'
        list ra_flags 'managed-config'
        list ra_flags 'other-config'
        list dhcp_option '3,192.168.1.1'
        list dhcp_option '6,192.168.1.1'
        list dhcp_option '15,lan'
        list dns 'fd2b:995c:da87::1'

config dhcp 'wan'
        option interface 'wan'
        option ignore '1'

config odhcpd 'odhcpd'
        option maindhcp '0'
        option leasefile '/tmp/hosts/odhcpd'
        option leasetrigger '/usr/sbin/odhcpd-update'
        option loglevel '4'

config host
        option name 'PC'
        list mac '[redacted]'

config host
        option name 'PHONE'
        list mac '[redacted]'

config host
        option name 'PHONE'
        list mac '[redacted]'

config host
        option name 'TAB'
        list mac '[redacted]'

config host
        option name 'IPCAM'
        list mac '[redacted]'

config host
        option name 'TV'
        list mac '[redacted]'

config host
        option name 'MEDIABOX'
        list mac '[redacted]'

config host
        option name 'PRINTER'
        list mac '[redacted]'

root@OpenWrt:~# cat /etc/config/firewall
config defaults
        option syn_flood        1
        option input            REJECT
        option output           ACCEPT
        option forward          REJECT
# Uncomment this line to disable ipv6 rules
#       option disable_ipv6     1

config zone
        option name             lan
        list   network          'lan'
        option input            ACCEPT
        option output           ACCEPT
        option forward          ACCEPT

config zone
        option name             wan
        list   network          'wan'
        list   network          'wan6'
        option input            REJECT
        option output           ACCEPT
        option forward          REJECT
        option masq             1
        option mtu_fix          1

config forwarding
        option src              lan
        option dest             wan

# We need to accept udp packets on port 68,
# see https://dev.openwrt.org/ticket/4108
config rule
        option name             Allow-DHCP-Renew
        option src              wan
        option proto            udp
        option dest_port        68
        option target           ACCEPT
        option family           ipv4

# Allow IPv4 ping
config rule
        option name             Allow-Ping
        option src              wan
        option proto            icmp
        option icmp_type        echo-request
        option family           ipv4
        option target           ACCEPT

config rule
        option name             Allow-IGMP
        option src              wan
        option proto            igmp
        option family           ipv4
        option target           ACCEPT

# Allow DHCPv6 replies
# see https://github.com/openwrt/openwrt/issues/5066
config rule
        option name             Allow-DHCPv6
        option src              wan
        option proto            udp
        option dest_port        546
        option family           ipv6
        option target           ACCEPT

config rule
        option name             Allow-MLD
        option src              wan
        option proto            icmp
        option src_ip           fe80::/10
        list icmp_type          '130/0'
        list icmp_type          '131/0'
        list icmp_type          '132/0'
        list icmp_type          '143/0'
        option family           ipv6
        option target           ACCEPT

# Allow essential incoming IPv6 ICMP traffic
config rule
        option name             Allow-ICMPv6-Input
        option src              wan
        option proto    icmp
        list icmp_type          echo-request
        list icmp_type          echo-reply
        list icmp_type          destination-unreachable
        list icmp_type          packet-too-big
        list icmp_type          time-exceeded
        list icmp_type          bad-header
        list icmp_type          unknown-header-type
        list icmp_type          router-solicitation
        list icmp_type          neighbour-solicitation
        list icmp_type          router-advertisement
        list icmp_type          neighbour-advertisement
        option limit            1000/sec
        option family           ipv6
        option target           ACCEPT

# Allow essential forwarded IPv6 ICMP traffic
config rule
        option name             Allow-ICMPv6-Forward
        option src              wan
        option dest             *
        option proto            icmp
        list icmp_type          echo-request
        list icmp_type          echo-reply
        list icmp_type          destination-unreachable
        list icmp_type          packet-too-big
        list icmp_type          time-exceeded
        list icmp_type          bad-header
        list icmp_type          unknown-header-type
        option limit            1000/sec
        option family           ipv6
        option target           ACCEPT

config rule
        option name             Allow-IPSec-ESP
        option src              wan
        option dest             lan
        option proto            esp
        option target           ACCEPT

config rule
        option name             Allow-ISAKMP
        option src              wan
        option dest             lan
        option dest_port        500
        option proto            udp
        option target           ACCEPT


### EXAMPLE CONFIG SECTIONS
# [redacted for shortening]
root@OpenWrt:~#

Any help would be highly appreciated, I don't exactly know what I'm doing.

Edit 1: I'm thinking about running the commands listed here:
https://blog.maleadt.net/2015/02/09/conntrack-torrents/

Edit 2: I also checked the Firewall Drop Invalid Packets option after reading a few posts.

You have to translate them to nftables.
Do you run torrent on the router itself or on some LAN machine (in later case you have to construct stateless-rewrite based NAT in raw table ipo notrack)

Thanks for the reply. The torrents are running on a pc (with vpn) via wifi.

28 Feb 2025, 04:58 by mail@forum.openwrt.org:

Doc is here
https://wiki.nftables.org/wiki-nftables/index.php/Performing_Network_Address_Translation_(NAT)#Stateless_NAT

Check fw4 list for raw table names and add includes with table+hook header in /etc/nftabled.d/*.nft

Thanks for the info. The link provided states "Note that the rules presented affect all TCP packets arriving at all interfaces and are intended only for demonstrative purposes." but I'd like it to only affect one device, the likely culprit being my PC running the torrents.

So I've set my PC's local static IP to 192.168.1.126, could you please help me alter the rule in the link provided to only affect my IP?

table inet raw {
	chain prerouting {
		type filter hook prerouting priority raw; policy accept;
		ip protocol tcp ip  daddr set 192.168.1.100 tcp dport set 10 notrack
		ip6 nexthdr tcp ip6 daddr set fe00::1       tcp dport set 10 notrack
	}
}

Would I change 192.168.1.100 to my static IP 192.168.1.126?

Would I execute the snippet in the /etc/nftabled.d/*.nft file?

It says I require nftables >=0.7 and linux kernel >= 4.9. I can't find nftables in the software list but I have nftables-json v1.1.1-r1 and not sure what kernel I have but assuming its up to date with this new device and the latest openwrt sysupgrade image I installed.

Thanks again for the assistance, I'm sure I'll get the hang of this one day :sweat_smile:

If torrents run on a client, via VPN, wouldn't the router only see one connection, belonging to the actual tunnel?

Unless they're not going through the tunnel, after all :slight_smile:

I'm not too sure, I'm a networking n00b to be honest. My vpn says it has split tunneling enabled, but unsure of the ramifications of such.

Depends on what's being split....

I believe it's only Bluestacks bypassing the vpn.