TP-Link WDR4300 replacement?

So, I bought a TP-Link WDR4300 router back in 2013, flashed OpenWRT to it and has been using it 24/7 since then.

In that mean time, my ISP contract got several upgrades, and last week I moved from a 35 megabits download / 3 megabits upload contract to 120 megabits download / 10 megabits download contract. And well, my WDR4300 started showing its age...

My usage of OpenWRT nowadays is quite light, basically the official 18.06.1 build + SQM QoS (for cake -- that's a must), miniUPNPd and LUCI Statistics app. On my previous 35 / 3 megabit contract, the WDR4300 powered through it without any issues, even with a somewhat high number of devices (7) connected and using the network simultaneously. But now that I upgraded to 120 / 10 contract, it struggles to maintain that speed even when connected over Ethernet if SQM QoS with cake is active.

Without SQM QoS, I get the full 120 megabits speed when wired and around 80 megabits over wireless. If I enable SQM QoS then it struggles to deliver between 90 ~ 100 megabits over Ethernet and the wireless performance drops to 60 ~ 70 megabits (the Load Average stats also skyrocket). Those numbers basically screams "UPGRADE YOUR ROUTER", but I would like explore some other possibilites I came across:

  1. Overclock my WDR4300 with a custom U-Boot
  2. Use old LEDE 17.01 custom builds with Qualcomm Fast Path
  3. Do both of the previous options?

If I go with the first option, how much I should push it (I've seen numbers varying from 600 to 720 MHz range)? Would it improve stability if I put a heatsink on the SoC? Would that be enough to power through my new 120 / 10 megabits contract? My router is quite old at this point, would it kill it too soon (remember it works 24/7 since 2013)?

If I go with the second option, would SQM QoS work? I've got contradictory answers on this, from my understanding Qualcomm Fast Path speeds things up by offloading NAT to the hardware, but SQM QoS must analyze every packet in order to do its job, negating the benefits Fast Path might bring. Is that right, SQM QoS = no Fast Path?

And finally, although I would like to avoid that for now, if the only solution is indeed getting a more powerful router, which one should I get? If I grab a new one now it will be at minimum another 5 years before I upgrade again so I'm also considering struggling with my aging WDR4300 until WPA3-enabled routers starts selling, which seems to be soon...

I tend to always go with routers using QCA chips since they seem to have better open-source support than the others (especially due CAF), but the consumer routers with their SoCs seems to get more and more scarce and expensive every day (the last I saw reasonably priced in my country was the IPQ8064-based Archer C2600, which is already old at this point). If not Qualcomm, which chip maker should I aim (one with good open-source support and hardware NAT supported by OpenWRT if possible)? And what platform, ARM or x86 (MIPS routers seems dead nowadays)?

Hi there,
it seems that your use case, could benefit from some overclocking. I have a wdr3600 (basically the same device) overclocked to 700Mhz, has been stable for ~6months, not really that much hotter, but I have a heatsink on the soc just in case. Performance increase is very noticable, but I don't have any numbers to show you right now. Of course note that overclocking can be dangerous, it could brick your device, or even damage parts of it. Have a look at this for a modded u-boot.
A fast path build, or a build with 4.14 kernel with flow offload, won't really help you since I'm 99% sure SQM enabled interfaces bypass all offloading.
Basically, as I see it, overclocking is the only choice to keep the wdr4300 going for a little while longer. When it's finally time to replace your router. you could look for a device with an mt7621, like the DIR-860L revision B1. Dual core MIPS @880Mhz, 4 "threads", ac wireless with open source drivers (with some stability issues now and then, mind you). Could probably handle up to 1Gbit/s. IPQ806x devices are even more powerful and more expensive.

Well, you could try just doing basic optimization which might be enough for now.

ie Compile using -O2 instead of -Os and make sure that the kernel is compiled for performance and not size.
There's also a pull reqest (that's been open for months), https://github.com/openwrt/openwrt/pull/858
Depending on what connection you have (non PPPoE) disabling mssfix on WAN will also enhance performance.

If you want a new router I'd go for the WRT32X/WRT3200ACM if you want something decent, the SoC is a tad slower than IPQ8*** but much more mature in mainline. Keep in mind that both mwlwifi/ath10k do have issues, mwlwifi for instance works like a charm for me so take reports with caution. Don't bother going for MIPS, it's more or less dying since pretty much all vendors have moved on to ARM and it's getting much more attention than MIPS nowadays. If you want something cheaper that might be ok, Zyxel NBG-6617 might be worth a look however it does have "experimental" support (IPQ4XXXX).

I'm already using pepe's U-Boot. How do I overclock it? The GitHub page says it only works with AR9331 based devices? Mine is AR9344...

My ISP connection is served through DHCP. How can I disable that mssfix thing? And would custom compiling the kernel with mssfix disabled and the patch of the PR you linked be enough to power though my 120 / 10 connection with SQM QoS active? Or should I just go overclocking instead?

I don't know but it's worth a shot at least, with a bit of luck it'll give you a ~10-15% boost however it might also be less. Be very careful about overclocking as it causes various clocks to drift which may cause issues further down the road.

There's this guide from gwim, also some more pre-build overclocking images, not listed in the blog. You could also build an image from pepe2k's repo, with some overclocking options on, but you would need to set up a build environment.

+1 for the wrt3200acm. I over clocked my wdr3600 and clocks drifted all over the place. after a week it could not give me the rite time.

1 Like

Here you go: http://projects.pyret.net/dump/lede/firewall/

Based on: https://github.com/diizzyy/openwrt/tree/production-20180812 (ath79)

As always your mileage may vary but it works fine for me (WDR3600), you probably want to disable (and stop) netdata, rsyncd and vnstat if you want to squeeze out as much as performance as possible.

The MSSFIX setting can be found (using LUCI) here: Network --> Firewall --> MSS clamping (WAN)

Thank you for the precompiled image, I was trying to compile from the source by myself and was getting some compilation errors (probably didn't set the build environment properly). Unfortunately I actually got worse performance numbers with your image, I also tested the last official snapshot build and it sit somewhere between the stable 18.06.1 (which performed the best until now) and your precompiled image (which sadly performed the worst).

So far, the most effective approach to me was overclocking. I set my WDR4300 to 650 / 450 / 225 MHz (CPU, DDR and AHB, respectively) through setclk command in pepe's modified u-boot, which were pretty stable (left memtester running with a 64 MB test for 4 hours while seeding some torrents and streaming some Netflix and got no errors) and that gave me full 120 megabits download on WiFi without SQM QoS (previously getting only 80 ~ 90 megabits). By enabling SQM, it still struggled but way less, 110 megabits on cable and 90 ~ 100 megabits over WiFi.

I'll get a heatsink for the SoC chip before pushing it any further, but from this preliminary testing I think my WDR4300 might be able to power through it until I get a newer router...

A few notes:

The next version of OpenWrt will come with support for software offload support, which should improve your routing speeds.

There's also the issue of the Ethernet driver not being very optimized for modern hardware and not supporting stuff like GRO and GSO to improve speeds. Kernel 4.19 should speed up performance though because of general improvements in the networking stack.

But one of my main OpenWRT usages is SQM QoS, and AFAICT it doesn't work with software offloading (that's just a different implementation of Fast Path, isn't it?), right?

Software offload is compatible. Hardware offload (mt7621 only for now) does not.

It's probably worse because it uses 4.14 kernel instead of 4.9 which ar71xx uses.
Anyhow, VPN etc might not like overclocking due to clock skew.

I doubt you'll see much improvement with QoS with later kernels as routing isn't the bottleneck.

For those who might still be interested in hardware that replaces the WDR4300, I used the TP-Link Archer C7 for quite a while. It is a slight upgrade form the WDR4300 and is still available for purchase, although they switched the chipsets with the v4 release, which diminishes the appeal. Then I switched to using the TP-Link Archer C2600, which is a significant upgrade from the Archer C7 as it is an 802.11ac Wave 2 device running on the IPQ8064 chipset, which gives you significant speed and distance improvements. But TP-Link recently discontinued the unit. Now I use a Netgear R7800, which is based on the IPQ8065 chipset. The R7800 performs a little better than the C2600 (you get what you pay for).

As an IT consultant, I install a lot of OpenWrt devices at client locations. Sometimes I can still find a C2600 sitting around in a warehouse, but after having used a Wave 2 device I would never go back to anything prior.