Unstable Connection on Legacy Hardware

Hello,

I've been using a very obselete WNDR4500v3 on OEM firmware as a wireless AP and router for years now with no issues. I've been using 300Mbps/15Mbps asymmetrical connection, but recently upgraded to a "gigabit" (1000Mbps/40Mbps) plan and, upon noticing no difference in bandwidth, plugged straight into the ISP-supplied modem. The gigabit download speeds were wonderful to see -- and illuminated the issue immediately. Obviously the 750Mhz 1 core processor just can't keep up, so I tried flashing the ancient firmware with OpenWrt. Since the flash, I have had a noticable (20-30%) increase in bandwidth, but I've also had issues with jitter, packet loss, and overall usability of the network. I'm pretty new to this, so how should I go about troubleshooting this? I've read the posts on getting a new router, and I'm not expecting to be breaking speed records here, but is there anything I can do as far as the unstablity goes? Should I go back to the OEM firmware?

Thank you for your time.

Waveform: https://www.waveform.com/tools/bufferbloat?test-id=2ea7e968-f5e2-4362-903d-b34f92f7272f

Additional notes: Topology isn't too complex, have the aforementioned ISP modem as a gateway, the WNDR4500v3 as wireless AP/router, and a pi-hole DNS adblocker. Here's some stuff I've attempted so far (to no avail):

  • Toggling Software/Hardware Flow Offloading
  • Flashing build 23.05.2
  • Cables (all Cat5e, but as I mentioned, the cable to the modem is fine)

Your hardware has been designed in 2014, when ~50 MBit/s were the kind of the hill. It's not fast enough to do more than ~200 MBit/s (and it's already with its back to the wall at those speeds, resulting in sawtooth like throughput patterns and delays). Software flow-offloading (hardware flow-offloading does not exist for this hardware) only goes this far, it's punching waaay beyond its limits.

1 Like

Keep in mind that your device is only 802.11n (Wifi 4), so it will have some real-world limitations here.

But that said, we can review your config to ensure that there aren't any obvious errors.

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
1 Like

There's no need for the configuration. This is the limit of the hardware (QCA9563, 1* 750 MHz, 128/128 MB).

x86_64 the RPi4/5, rockchip rk3399+, cavium and probably mt7622bv or filogic 820/830/880 will cope with this, ath79 does not.

1 Like

Thank you for your quick replies. I see that there is not much to be done, other than to break out the wallet. Here is the output of the commands you requested:

root@OpenWrt:~# ubus call system board
}
        "kernel": "5.15.134",
        "hostname": "OpenWrt",
        "system": "Qualcomm Atheros QCA956X ver 1 rev 0",
        "model": "Netgear WNDR4500 v3",
        "board_name": "netgear,wndr4500-v3",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "23.05.0",
                "revision": "r23497-6637af95aa",
                "target": "ath79/nand",
                "description": "OpenWrt 23.05.0 r23497-6637af95aa"
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 'fde2:3146:34e3::/48'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'eth0.1'

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'
        list dns '192.168.1.250'

config device
        option name 'eth0.2'
        option macaddr '[redacted]'

config interface 'wan'
        option device 'eth0.2'
        option proto 'dhcp'

config interface 'wan6'
        option device 'eth0.2'
        option proto 'dhcpv6'

config switch
        option name 'switch0'
        option reset '1'
        option enable_vlan '1'

config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '1 2 3 4 0t'

config switch_vlan
        option device 'switch0'
        option vlan '2'
        option ports '5 0t'
root@OpenWrt:~# cat /etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option path 'platform/ahb/18100000.wmac'
        option channel '1'
        option band '2g'
        option htmode 'HT20'
        option cell_density '0'

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

config wifi-device 'radio1'
        option type 'mac80211'
        option path 'pci0000:00/0000:00:00.0'
        option channel '36'
        option band '5g'
        option htmode 'HT20'
        option cell_density '0'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option ssid 'MySpectrumWifi69-5G'
        option encryption 'psk2'
        option key '[redacted]'
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 '1000'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases'
        option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
        option localservice '1'
        option ednspacket_max '1232'

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option dhcpv4 'server'
        option dhcpv6 'server'
        option ra 'server'
        list ra_flags 'managed-config'
        list ra_flags 'other-config'

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 'mav'
        option mac '[redacted]'
        option ip '192.168.1.163'
        option leasetime 'infinite'
root@OpenWrt:~# cat /etc/config/firewall

config defaults
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option synflood_protect '1'
        option flow_offloading '1'
        option flow_offloading_hw '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'

config rule
        option name 'Allow-DHCP-Renew'
        option src 'wan'
        option proto 'udp'
        option dest_port '68'
        option target 'ACCEPT'
        option family 'ipv4'

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'

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'

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'

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'

config redirect
        option dest 'lan'
        option target 'DNAT'
        option name 'deluge'
        option src 'lan'
        option src_dport '6881-6887'
        option dest_ip '192.168.1.163'
        option dest_port '6881'
        option family 'ipv4'
1 Like

Just for some reference. I have a tl-wdr4300 (ar9344, 1* 560 MHz, 8/128), very comparable except for the clock frequency (and its impact is relatively linear here). Without any specialties (plain DHCP, no PPPoE, no sqm, no software flow-offloading…) it will hit the wall in throughput tests around 170-175 MBit/s. At those speeds you already see a sawtooth like impact on the data rates and significant delays - it's only reasonably capable up to (at most) ~150 MBit/s.

As you've noticed, software flow-offloading can extend these limits quite a bit, but that is cheating, as not everything can be offloaded (meaning you will repeatedly hit traffic patterns that can't be offloaded and will hit the ceiling, hard) and it doesn't play ball at all with sqm, vpn or similar features.

At 750 MHz I would expect your device get close to ~200 MBit/s throughput (without offloading), before hitting the same issues I'm (@560 MHz) already seeing at ~170 MBit/s

2 Likes

I've purchased a used Belkin RT3200 on eBay for around $40USD, do you think it'll be able to handle gigabit switching with OpenWrt? If not, I'll return it and get something else.

Thanks

1 Like

I've never had any mt7622bv device so far, but it should (sqm and friends would be a challenge though) - it's certainly worth trying.

1 Like

For anyone who stumbles upon this post in the future, the Belkin RT3200 (also available as Linksys E8450) was able to solve my issues.

Thank you to @slh and @psherman for your helpful replies.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.