On Mon, Feb 22, 2021 at 08:51:32PM -0500, Steven Shockley wrote: > I have OpenBSD 6.8 running on a Dell R210-II acting as a firewall/router. > To combat bufferbloat I tried implementing FQ-CoDel queueing. The WAN > bandwidth is advertised as 940 Mbit/sec down and 840 Mbit/sec up. > > I've tried adding one or the other of these lines to my pf.conf: > > queue outq on $ext_if flows 1024 bandwidth 1024M max 1024M qlimit 1024 > default > or > queue outq on $ext_if flows 1024 qlimit 1024 default > > In both cases, upload speeds drop from ~800 Mbit/sec to < 100 Mbit/sec. > Changing the 1024M to other values makes little or no difference. To be > fair, bufferbloat does improve, but that's quite a hit. I'm measuring using > the dslreports.com speed test via wired ethernet through a Cisco 3750x. > > One possible complexity is that the internal interface is tagged VLANs, but > if it were an MTU issue I'd expect it to affect performance across the > board.
Here is what I am doing. First rule, apply queue only on real interface, and not on a vlan interface. Next, I have a ADSL uplink. My router has only one physical interface: re0. The router is connected to ADSL modem via a vlan, and a pppoe0 session is build over the vlan. On local network side, several vlan exists. Using http://www.dslreports.com/speedtest/: - download: 8.140 Mbit/s (90% = 7.326M) - upload: 0.827 Mbit/s (90% = 0.744M) I am applying queue on pppoe0 to control outgoing traffic, and queue on re0 to control the incoming traffic. # on pppoe0 : outgoing traffic queue rootq on pppoe0 bandwidth 0.744M max 0.744M queue netq on pppoe0 parent rootq flows 1024 bandwidth 0.744M max 0.744M qlimit 32 default queue guessq on pppoe0 parent rootq flows 1024 bandwidth 0.150M max 0.150M qlimit 32 # on re0 : incoming traffic queue rootq on re0 bandwidth 1G max 1G queue stdq on re0 parent rootq flows 1024 bandwidth 1G max 1G qlimit 1024 default queue netq on re0 parent rootq flows 1024 bandwidth 7.362M max 7.362M qlimit 32 queue guessq on re0 parent rootq flows 1024 bandwidth 0.500M max 1.000M qlimit 16 and next, I am setting the queue to use using rules (please note I am using "group" parameter on interfaces for the names like "guess", "internet" or "with_internet"). anchor "outgoing" out on internet received-on with_internet { pass out label "outgoing" match out set queue netq match out received-on guess set queue guessq } I hope it helps, even if my network speeds isn't comparable to your :) Thanks. -- Sebastien Marie

