First off.. this is not a which is better thread and don't want it to be one. I've been using OPNSense for quite some time now, and have really enjoyed it and contributed/donated, plus plan on continuing to do so.
I've setup the traffic shaper and overall it has done well. I have little issues with the implementation and it performs simply and easily.
I spun up a box with x86 OpenWRT just to see and experiment, configured SQM and applied CAKE with their piece_of_cake script.. ran a series of tests, and not really finding (at this time) much difference in network performance.
Other than being able to define my properties, rules, queues etc via the GUI in OPNsense whereas OpenWRT is script oriented. They both are a bit tedious to a degree, but OpenWRT moreso (IMO).
These are two completely different systems I'm running, so I know it's an Apples to Oranges scenario, but in general.. I'm really curious what at the core are the implementation differences?
I really like to "keep it simple sorta" :)
I think the way they are implemented at the kernel level is different. But I'm not sure if that is your question? I think BSD has to use Dummynet to get these AQM's in place, whereas linux seems to have a more native approach. Both seem to be pretty effective so I'm not sure this technical detail has much impact on us from an end user perspective.
I've used OpenWRT as well and am familiar with their scripted implementation to quickly get an AQM up and running. I actually find the OWRT method faster and easier but, if you want to customize it it's more complicated. The OPNsense implementation strikes a good balance of ease of setup and can be easily customized as well.
Quote from: opnfwb on March 06, 2021, 05:14:41 PM
...
I've used OpenWRT as well and am familiar with their scripted implementation to quickly get an AQM up and running.
...
I can see where having separate scripts at the ready would definitely make it easier. I noticed OpenWRT is able to shape based on DSCP tagging? (do i have the correct?)
We are able to kind of save a system configuration and restore settings, but importing just shaper settings is a bit lost in OPNsense.
Does OpenWRT use something similar to dummynet?
OpenWRT is linux based and as far as I know, they use tc to set all of their traffic shaping implementations with those scripts. I'm not aware of that function being usable on OPNsense specifically, instead OPNsense (and most BSDs as far as I can tell) use IPFW/Dummynet.
So if you wanted to manually setup something on OPNsense, you'd need to invoke the scheduler differently than you would on linux.
For instance, if you want to manually add an FQ_Codel scheduler on OPNsense you'd use something like this:
ipfw sched 1 config pipe 1 type fq_codel && ipfw sched 2 config pipe 2 type fq_codel
OpenWRT or any modern Linux kernel would use this:
tc qdisc add dev eth0 root fq_codel
The main difference is that the BSD Dummynet variants seem to be more reliant on specifying schedulers/pipes. Whereas Linux seems to be fine with just a single command on a physical interface.
Not sure if this answers your question or not? If you're looking to take something out of the OpenWRT scripts and use it directly on OPNsense (or any other BSD OS), it is likely going to need quite a bit of massaging to get it to work due to the use of ipfw vs tc. It should mostly be possible but it would take a lot of trail and error to get all the switches correct.
Quote from: opnfwb on March 07, 2021, 03:53:01 AM
...
Not sure if this answers your question or not?
...
It does, thanks for the details!