Solved Setting up queuing on an interface: pf+ipfw

I am trying to set up queuing on my interface. It seems I can't use only PF for it because of ALTQ (altq not being implemented for USB ethernet adapters?).

So it seems like I need to set up a dummynet+ipfw for queuing first with fq_codel, and then PF will process normally.

Can I order the processing with pfilctl so it goes ethernet <-> ipfw <-> pf? Has anyone chained up and re-ordered packet processing that way before? [what a confusion that pfilctl is NOT related to PF firewall]

Seems also that that order of hooks needs to be set manually because otherwise it just puts it in the order that kernel modules are loaded. So what's the way to order them up on boot via rc.conf?
 
I am now considering switching to ipfw becuase it just lets me do queuing without some extra hardware driver hooks implemented....but it's so nice you can queue up ipfw with pf without any mess.
 
Can I add weight to sched 1 config pipe 1 type fq_codel in /etc/dnctl.conf so that I can do priority in PF?

AFAIK, weight must be placed in queue parameters. I'm playing with
Code:
...
# vlan 1 upload
pipe 2 config bw 95Mbit/s
sched 2 config pipe 2 type fq_codel
queue 2 config sched 2 weight 50
...
in my lan.
Dont forget place shaper before NAT.
 
A thing of beauty!

Please note: Dummynet queue support directly in /etc/pf.conf only appeared starting FreeBSD 14.x, it's a fairly new feature.
 
As a side note #2, it's kinda sad that fq_codel is not on by default because desktop installs will have zero benefit from that and experience all the beautiful things that come from lack of it. Fedora Linux has it on by default (Linux sets the default algo in the kernel), for example.

I understand it cannot be on by default as the design does not allow - you'd have to set up a firewall that takes advantage of it, right? But I don't see this in the Handbook - shouldn't this be in the handbook so people realize they gotta turn some extra nobs to get a smooth desktop experience, SirDice Crivens @otherdevs?
 
Back
Top