The framework behind the "limiter" tab in pfSense is essentially what we have picked as our shaper technology. All other parts based on ALTQ were removed, mostly because ALTQ is disabled in FreeBSD GENERIC builds and also because OpenBSD removed ALTQ in favour of a directly plugged HFSC shaping algorithm. ALTQ was thought of as a way to deliver many shaping technologies, but over the years (at least for OpenBSD) only HFSC came to matter.ALTQ is directly plugged into pf(4), while the limiter technology based on ipfw(4) and dummynet(4) runs as a second completely detached packet filter. This brings a few limitations: you cannot use pf(4) rules to shape traffic anymore, this is an important detail, because the filtering in ipfw(4) is not as advanced (it has the day to day basics but not such things as e.g. OS detection).This also brings an advantage: when disabling the firewall, you can still shape the traffic for routing...dummynet(4) used to misses the CoDel algorithm which pfSense ALTQ has, but it recently became available in a first version, which we have picked up already and will provide GUI support for in a couple of weeks[1].[1] https://lists.freebsd.org/pipermail/freebsd-ipfw/2016-February/006026.htmlThe main difference is in configuration approach (queues, pipes, rules) and in the rules complexity itself. In the majority of use cases, the missing rules flexibility does not matter.This is just a technical overview. Others can tell more about the shaper differences from an actual user perspective or how they are using the shaper.
@Animosity022: can you please document your setup in more detail as I'm trying to replicate the same thing but failed so far, thanks!
Limiters:10000: 10.000 Mbit/s 0 ms burst 0 q75536 50 sl. 0 flows (1 buckets) sched 10000 weight 0 lmax 0 pri 0 droptail sched 75536 type FIFO flags 0x0 0 buckets 0 active10001: 40.000 Mbit/s 0 ms burst 0 q75537 50 sl. 0 flows (1 buckets) sched 10001 weight 0 lmax 0 pri 0 droptail sched 75537 type FIFO flags 0x0 0 buckets 0 activeQueues:q10004 50 sl. 0 flows (1 buckets) sched 10001 weight 10 lmax 0 pri 0 droptailq10002 50 sl. 0 flows (1 buckets) sched 10001 weight 100 lmax 0 pri 0 droptailq10003 50 sl. 0 flows (1 buckets) sched 10000 weight 10 lmax 0 pri 0 droptailq10001 50 sl. 0 flows (1 buckets) sched 10000 weight 100 lmax 0 pri 0 droptailSchedulers:10000: 10.000 Mbit/s 0 ms burst 0 q75536 50 sl. 0 flows (1 buckets) sched 10000 weight 0 lmax 0 pri 0 droptail sched 10000 type FQ_CODEL flags 0x0 0 buckets 1 active FQ_CODEL target 5ms interval 100ms quantum 1514 limit 10240 flows 1024 ECN Children flowsets: 10003 10001 BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp 0 ip 0.0.0.0/0 0.0.0.0/0 4 4696 0 0 010001: 40.000 Mbit/s 0 ms burst 0 q75537 50 sl. 0 flows (1 buckets) sched 10001 weight 0 lmax 0 pri 0 droptail sched 10001 type FQ_CODEL flags 0x0 0 buckets 1 active FQ_CODEL target 5ms interval 100ms quantum 120 limit 120 flows 1024 ECN Children flowsets: 10004 10002 0 ip 0.0.0.0/0 0.0.0.0/0 3 120 0 0 0
sequence: 6interface: WANproto: IP (i'm dual stacked)source: anyinvert source: uncheckedsrc-port: anydestination: anyinvert destination: uncheckeddst-port: 12345target: low-prio download queue