Best Router for Packet Priortization

LongRangeSkeet

Regular Contributor
One potential idea for OpenWRT would be to get a low-power PC (like a Qotom), and run the x86 version of OpenWRT on it. You'd need an external AP for wifi.
Would using OpenWrt on X86 mini PC be more stable than running on regular routers? The more I researched OpenWrt, the more I see people struggling with a plethora of bugs and glitches on all types of router hardware both old and new. Knowing this, I feel like I would never be able to trust OpenWrt as my daily driver because I sadly wouldn't have the knowledge or the patience to keep troubleshooting.

So far I had pretty negative experience with both OpenWrt and DD Wrt, but hey I can't complain too much since they're free...
 

RMerlin

Asuswrt-Merlin dev
Would using OpenWrt on X86 mini PC be more stable than running on regular routers? The more I researched OpenWrt, the more I see people struggling with a plethora of bugs and glitches on all types of router hardware both old and new.
Depends on what the issues are. I've personally never really used OpenWRT (except in its highly customized version used by Almond). But at least you don't have to deal with proprietary technologies like Qualcomm's Shortcut FE acceleration, and relying on pure CPU muscle to handle high performance routing, so it's less likely IMHO to be glitchy.
 

rs1987

Occasional Visitor
Would using OpenWrt on X86 mini PC be more stable than running on regular routers? The more I researched OpenWrt, the more I see people struggling with a plethora of bugs and glitches on all types of router hardware both old and new. Knowing this, I feel like I would never be able to trust OpenWrt as my daily driver because I sadly wouldn't have the knowledge or the patience to keep troubleshooting.

So far I had pretty negative experience with both OpenWrt and DD Wrt, but hey I can't complain too much since they're free...
Well, let me put it this way: if you're technically inclined then Openwrt is great. I have a beast of a router based on an Intel C2558 SoC which I built myself. It's a 4-core x86_64 with 16GB and RAM and a data center class SSD. It's been running my own customized version of Openwrt for 6 years. I'm in the process of upgrading my custom build to the latest release of Openwrt. With the Intel Quick Assist drivers which I ported to the Openwrt build, the kernel crypto transforms can sustain 3Gbps of encryption / decryption, although my board only has 1Gbe interfaces, so it can max out an 1Gbps IPSEC VPN over ethernet without even breaking a sweat.

I find Openwrt pretty bulletproof: I've gone for well over a year without ever restarting it. Normally it only gets power cycled when I need to turn off the electricity or there's a power failure.

There were a couple of minor bugs I needed to fix when creating my build, but since I am comfortable coding for both kernel and userspace, it's never been a problem. They've mostly been compilation issues and in one or two cases, actual application issues, which are not the fault of Openwrt. And they only reared their head because I wanted to do some specific things that are not normal home router use cases.

Openwrt is able to do some pretty sophisticated things. I don't do it now as I have a 350mbps cable net connection, but I used to use it to bond two ADSL lines together (so the speed is roughly 90% of 2x the slowest link). That involves some kernel mods, a bunch of scripts, some source routing wizadry, a server in a data centre to reassemble the packet stream and some sophisticated iptables rules on both ends.

My build also gathers netflow data and sends it to my elasticsearch/logstash/kibana stack and log data which it sends to Graylog. The QoS is great and I have quite sophisticated QoS on it, both for my gaming and for my VOIP use. SQM scripts are one of the packages and are pretty good if you don't want to tinker with the tc commands yourself. Performance is excellent.

So if you're technically minded and willing to write scripts to do things that Openwrt is not designed to "do out of the box", it can do pretty much anything you need, as at the base level, it's Linux. I would have no hesitation recommending Openwrt if you're happy to get your hands dirty. You probably don't need a C3000-class SOC similar to what I have as that's pure overkill, but there are lots of x86_64 platforms available for a relatively accessible price that could run Openwrt. The only thing you need to consider carefully is your wifi cards if you plan on using the router as an AP as well (ath10k is well supported and there are a lot of options available).
 

RMerlin

Asuswrt-Merlin dev
Compared to some of the alternatives, I'd say OpenWRT is not that complex to manage. I've had to work with a customer's Microtik these past two years, and I find it painful to manage in general.
 

LongRangeSkeet

Regular Contributor
Well, let me put it this way: if you're technically inclined then Openwrt is great. I have a beast of a router based on an Intel C2558 SoC which I built myself. It's a 4-core x86_64 with 16GB and RAM and a data center class SSD. It's been running my own customized version of Openwrt for 6 years. I'm in the process of upgrading my custom build to the latest release of Openwrt. With the Intel Quick Assist drivers which I ported to the Openwrt build, the kernel crypto transforms can sustain 3Gbps of encryption / decryption, although my board only has 1Gbe interfaces, so it can max out an 1Gbps IPSEC VPN over ethernet without even breaking a sweat.

I find Openwrt pretty bulletproof: I've gone for well over a year without ever restarting it. Normally it only gets power cycled when I need to turn off the electricity or there's a power failure.

There were a couple of minor bugs I needed to fix when creating my build, but since I am comfortable coding for both kernel and userspace, it's never been a problem. They've mostly been compilation issues and in one or two cases, actual application issues, which are not the fault of Openwrt. And they only reared their head because I wanted to do some specific things that are not normal home router use cases.

Openwrt is able to do some pretty sophisticated things. I don't do it now as I have a 350mbps cable net connection, but I used to use it to bond two ADSL lines together (so the speed is roughly 90% of 2x the slowest link). That involves some kernel mods, a bunch of scripts, some source routing wizadry, a server in a data centre to reassemble the packet stream and some sophisticated iptables rules on both ends.

My build also gathers netflow data and sends it to my elasticsearch/logstash/kibana stack and log data which it sends to Graylog. The QoS is great and I have quite sophisticated QoS on it, both for my gaming and for my VOIP use. SQM scripts are one of the packages and are pretty good if you don't want to tinker with the tc commands yourself. Performance is excellent.

So if you're technically minded and willing to write scripts to do things that Openwrt is not designed to "do out of the box", it can do pretty much anything you need, as at the base level, it's Linux. I would have no hesitation recommending Openwrt if you're happy to get your hands dirty. You probably don't need a C3000-class SOC similar to what I have as that's pure overkill, but there are lots of x86_64 platforms available for a relatively accessible price that could run Openwrt. The only thing you need to consider carefully is your wifi cards if you plan on using the router as an AP as well (ath10k is well supported and there are a lot of options available).
Dang. Looks like OpenWrt can do a lot, but to set it up and configure it all like you describe, well, that's a little bit above my head. Just curious. What kind of formal training does it take to know how to do all this? Or, is it all just self taught? If you don't mind me asking.
 

rs1987

Occasional Visitor
Dang. Looks like OpenWrt can do a lot, but to set it up and configure it all like you describe, well, that's a little bit above my head. Just curious. What kind of formal training does it take to know how to do all this? Or, is it all just self taught? If you don't mind me asking.
I don't really think it requires formal training per se as there are lots of very competent self-taught people, some whose skills and knowledge rival those of the best. To build a basic self-compiled OpenWrt system, this is fairly easy to do as the instructions are quite clear and probably just takes a good grasp of Linux system administration and the ability to read and follow instructions. Once you get into customizing it, the required skill level will of course be a function of what exactly you're trying to do: a customization involving the kernel is going to be much trickier than just bumping the version on an existing application.

I think to be able to customize at the kernel level and introduce new functionality such as the line bonding I referred to, a sound knowledge of C programming, kernel architecture, cross-compilation build systems, the git version control system, Linux system administration, networking protocols and shell scripting is a prerequisite.

However if you're curious as to my background, I have a masters in computer science and worked in network security software development for the first half of my career. I've been writing system level and kernel code for the last 30 years, a combination of embedded and x86 systems and I've been using Linux ever since Linus Torvalds released the original version back in 1991.
 

LongRangeSkeet

Regular Contributor
I don't really think it requires formal training per se as there are lots of very competent self-taught people, some whose skills and knowledge rival those of the best. To build a basic self-compiled OpenWrt system, this is fairly easy to do as the instructions are quite clear and probably just takes a good grasp of Linux system administration and the ability to read and follow instructions. Once you get into customizing it, the required skill level will of course be a function of what exactly you're trying to do: a customization involving the kernel is going to be much trickier than just bumping the version on an existing application.

I think to be able to customize at the kernel level and introduce new functionality such as the line bonding I referred to, a sound knowledge of C programming, kernel architecture, cross-compilation build systems, the git version control system, Linux system administration, networking protocols and shell scripting is a prerequisite.

However if you're curious as to my background, I have a masters in computer science and worked in network security software development for the first half of my career. I've been writing system level and kernel code for the last 30 years, a combination of embedded and x86 systems and I've been using Linux ever since Linus Torvalds released the original version back in 1991.
Thanks for sharing. That is quite a formidable skill set. I now see that the OpenWrt is more than just flashing or imaging a device, and that it takes extensive knowledge to get it setup and running correctly. Something that's definitely out of reach for amateurs like me who are just looking for a simple turnkey, plug and play solution :(
 

rs1987

Occasional Visitor
Thanks for sharing. That is quite a formidable skill set. I now see that the OpenWrt is more than just flashing or imaging a device, and that it takes extensive knowledge to get it setup and running correctly. Something that's definitely out of reach for amateurs like me who are just looking for a simple turnkey, plug and play solution :(
You can just download and flash one of the pre-built images if you don't plan on customizing the base system. In this sense it is plug and play, assuming that you have a router for which a pre-built binary is available, and there are many. It should just work "out of the box".

I customized it since a solution did not exist for the hardware I was using.
 

Val D.

Very Senior Member
I have a masters in computer science and worked in network security software development for the first half of my career. I've been writing system level and kernel code for the last 30 years
This is why it looks easy for you. I believe @LongRangeSkeet will learn pfSense configuration faster.
 

Prodeje79

Occasional Visitor
Found this awesome thread and love to hear some updates. I *think* that I want to find/build a router that can handle cake with 1GB throughput. Heck of brain trust in this thread.
Truth be told, I can currently only get 400/30 on Spectrum. Just hoping someday get the GB. I found this thread tonight because my gaming is being impacted. When my family watches Disney+ 4k HDR, (sometimes two streams) my rocket league, Valorant, pubg, everything takes a crap. I get network disconnected and ping spikes etc. Gaming PC and TVs are wired.

This sounds like bufferbloat from what I read. So I enabled adaptive QoS on my Merlin Asus 68u. I'm still tweaking but landed on 85% on the max down and up. My wifi is disabled on the Asus. I really only need a router.

Anyways I think I want to find the best router that can run cake. I have a r7800 on the shelf with bad wifi radios..... Also considering to pickup the 86u now that it runs cake. What's everyone thinking? I want my family to be able to stream high quality with no impact to my video gaming.
 

Trip

Very Senior Member
@Prodeje79 - I presume you've ruled out other pitfalls, such as poor-quality layer 1, saturated LAN links, wifi interference/repeating, etc., and also confirmed you're indeed saturating your download and/or upload when these behaviors are occurring? If reasonably sure it's a "yes" to both, then properly-applied and high-enough throughput SQM on the WAN interface may indeed solve your issues.

AFAIK, the problem with trying to do any form of SQM on Broadcom hardware (most Asus models, the 68U included) is kernel driver integration is not 100%, due to Broadcom's closed-source drivers. I'll ping @RMerlin and @ttgapers, who just came out with a cake scripting extension for Merlin -- both of which could probably confirm, or correct me if I'm mistaken. If largely correct, though, that discrepancy could potentially help explain why one might notice sub-optimal de-bloating on Merlin, as opposed to with OpenWRT on Qualcomm embedded or x86_64 architectures.

Regardless, 430Mb/s SQM would be doable with higher-clock MIPS and ARM routers (EdgeRouter 4, UniFi Dream Machine, maybe an R7800, etc.), but for 1Gb/s+, you'll probably want an x86_64 box, 2Ghz+ clock Celeron or i-Core CPU.
 

ttgapers

Senior Member
Found this awesome thread and love to hear some updates. I *think* that I want to find/build a router that can handle cake with 1GB throughput. Heck of brain trust in this thread.
Truth be told, I can currently only get 400/30 on Spectrum. Just hoping someday get the GB. I found this thread tonight because my gaming is being impacted. When my family watches Disney+ 4k HDR, (sometimes two streams) my rocket league, Valorant, pubg, everything takes a crap. I get network disconnected and ping spikes etc. Gaming PC and TVs are wired.

This sounds like bufferbloat from what I read. So I enabled adaptive QoS on my Merlin Asus 68u. I'm still tweaking but landed on 85% on the max down and up. My wifi is disabled on the Asus. I really only need a router.

Anyways I think I want to find the best router that can run cake. I have a r7800 on the shelf with bad wifi radios..... Also considering to pickup the 86u now that it runs cake. What's everyone thinking? I want my family to be able to stream high quality with no impact to my video gaming.
@Prodeje79 - I presume you've ruled out other pitfalls, such as poor-quality layer 1, saturated LAN links, wifi interference/repeating, etc., and also confirmed you're indeed saturating your download and/or upload when these behaviors are occurring? If reasonably sure it's a "yes" to both, then properly-applied and high-enough throughput SQM on the WAN interface may indeed solve your issues.

AFAIK, the problem with trying to do any form of SQM on Broadcom hardware (most Asus models, the 68U included) is kernel driver integration is not 100%, due to Broadcom's closed-source drivers. I'll ping @RMerlin and @ttgapers, who just came out with a cake scripting extension for Merlin -- both of which could probably confirm, or correct me if I'm mistaken. If largely correct, though, that discrepancy could potentially help explain why one might notice sub-optimal de-bloating on Merlin, as opposed to with OpenWRT on Qualcomm embedded or x86_64 architectures.

Regardless, 430Mb/s SQM would be doable with higher-clock MIPS and ARM routers (EdgeRouter 4, UniFi Dream Machine, maybe an R7800, etc.), but for 1Gb/s+, you'll probably want an x86_64 box, 2Ghz+ clock Celeron or i-Core CPU.
Good questions, and reply. The AC68U cannot run Cake at the moment non HND/4.x kernel. I'd love it to, as my parents run one. I use the AC86U for myself and another site. I am strongly considering either getting another AC86U for my parents and use the AC68U as repeater/Mesh elsewhere. The 88U seems a bit too expensive and not as many standard features to justify the cost.

We would love to get ipk builds for the other 2x routers than can support Cake....just need to find the steps/help.
 

Trip

Very Senior Member
@ttgapers - On supported Asus models, would you say your CAKE implementation is as fully kernel-integrated as the equivalent inside OpenWRT on Qualcomm hardware? For as much as I've gathered, I thought that SQM on Broadcom hardware would never produce quite the level de-bloating and/or smoothing performance due to limitations of the Broadcom closed-source driver packages. Or am I mistaken, and that's largely a moot point, either given the nature of the implementation or perhaps the fact that any discrepancies have been rectified by now? Genuinely curious here...
 

RMerlin

Asuswrt-Merlin dev
I *think* that I want to find/build a router that can handle cake with 1GB throughput
If you want QoS AND 1 Gbps throughput, you will most likely need to go down the DIY route, using something like an Intel i3 or i5 in a SFF or industrial design, like a Qotom mini PC. Most SOHO routers will struggle getting anywhere near gigabit performance when using QoS.
 

coxhaus

Part of the Furniture
I have been looking at OpenWrt the last few evenings since it has been mentioned on this site a lot. It seems nice but looking at it I would guess the x86 platform would be the best choice with more users on this platform. Having more users mean better testing and more bugs resolved. They use conventional routing which gives you more options than some kind of cut through, fastpath, which limits what you can do. I remember when cut through came out. It was so much faster than 10 meg hubs. It was switch inspired. If I wasn't stuck on Cisco and layer 3 switching I would probably try it on a small x86 platform as my rack is no more. I am not a coder so I don't know what limits I would hit. I did spend 15 years writing PL1 code on a main frame before any kind of small computer existed. I could probably figure out how to compile already written code. I am not sure I would trust my own code for a firewall though, to easy to make a mistake. OpenWrt does seem to work more like old enterprise routers of yesterday. I may be old man projecting since I have never run OpenWrt.
 

topazann

New Around Here
There's no one best router. Every router has its pros and cons, so you just have to read the user manuals to figure out what would work best for you before buying/setting it up.

Generally, if you want something that's simple to setup and just works, look for it to support fq_codel. The benefit of fq_codel is that the algorithm does all the work and distributes bandwidth fairly while distinguishing between small(ie gaming) packets, and large(ie plex) downloads to minimize latency and bufferbloat where needed. Pretty much all you need to do is set the max limits and you don't need to worry about priorities, etc.
regards, printsbery
 
Last edited:

coxhaus

Part of the Furniture
Support for fq_codel has very little purpose other than when you saturate your internet pipe. It just shows up on speedtest because that is what you are doing. In every day use it has little to no impact unless you have a very slow DSL internet pipe. And remember you can over saturate your internet pipe so badly your connection will time out when you run out of buffers even using fq_codel. So the use has a very narrow margin of use. Mainly speedtest.
 

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Top