OPNsense Forum

Archive => 20.7 Legacy Series => Topic started by: EFaden on September 04, 2020, 02:25:33 pm

Title: Help w/ FQ-Codel
Post by: EFaden on September 04, 2020, 02:25:33 pm
Hey Everyone,

I'm struggling to get FQ-Codel working correctly and could use some suggestions.  I have been using

https://www.lullabot.com/articles/eliminating-robots-and-voip-glitches-with-active-queue-management
and
https://forum.opnsense.org/index.php?topic=7423.0

as a guide, but my numbers are not what I think they should be.  Mostly on my download I seem to be loosing about 50 Mbps, but I'm not sure why.  My connection is a 300/30 Mbps cable line.  Here is what I have setup so far.

Pipes:
  Downstream Pipe -
   Bandwidth => 290 (300 Mbps minus about 3% for overhead)
   Metric => Mbps
   Mask => None, Codel Off, Pie Off
   Advanced Options -
     Scheduler Type => FlowQueue-Codel
     FQ-Codel ECN Checked
     All others default/blank

 Upstream Pipe
   Bandwidth => 29 (29 Mbps minus about 3% for overhead)
   Metric => Mbps
   Mask => None, Codel Off, Pie Off
   Advanced Options -
     Scheduler Type => FlowQueue-Codel
     FQ-Codel ECN Checked
     All others default/blank

Queues:
  Upstream High Priority Queue (From lullabot link, for TCP ACK and DNS)
    Weight 10
    Pipe - Upstream Pipe
    All Others Default

  Upstream Regular Priority Queue
    Weight 1
    Pipe - Upstream Pipe
    All Others Default

  Downstream Regular Priority Queue
    Weight 1
    Pipe - Downstream Pipe
    All Others Default

Rules

#1, Interface WAN, Source Any, Destination 10.0.0.0/24 (LAN Network), Direction Both, Queue Downstream Regular

#10, Interface WAN, Proto TCP ACK Only, Source 10.0.0.0/24 (LAN Network), Destination Any , Direction Both, Queue Upstream High Priority

#11, Interface WAN, Proto TCP, Source 10.0.0.0/24 (LAN Network), Destination Any, Destination Port 53, Direction Both, Queue Upstream High Priority

#20, Interface WAN, Source 10.0.0.0/24 (LAN Network), Destination Any, Direction Both, Queue Upstream Regular Priority


With these settings I get an A on bufferbloat and my upstream seems to be great, but I seem to loose about 50 mbps on my downstream.

Any thoughts?  Suggestions?

Thanks
Title: Re: Help w/ FQ-Codel
Post by: mimugmail on September 04, 2020, 03:00:16 pm
When you only have ONE queue, you can just leave it, or try weight 100
Title: Re: Help w/ FQ-Codel
Post by: EFaden on September 04, 2020, 07:23:29 pm
Seems to have fixed it now.  Thanks!
Title: Re: Help w/ FQ-Codel
Post by: devilkin on October 31, 2020, 06:26:19 pm
Seems to have fixed it now.  Thanks!

What did you change? I'm having the same issue - speed should be around 300Mbit, hitting max 130Mbit when I activate the rules.

My setup:

Code: [Select]
# ipfw sched show
10004: 290.000 Mbit/s    0 ms burst 0
q75540  50 sl. 0 flows (1 buckets) sched 10004 weight 0 lmax 0 pri 0 droptail
 sched 10004 type FQ_CODEL flags 0x0 0 buckets 0 active
 FQ_CODEL target 5ms interval 100ms quantum 1514 limit 10240 flows 1024 ECN
   Children flowsets: 10001 10003
10005:  19.000 Mbit/s    0 ms burst 0
q75541  50 sl. 0 flows (1 buckets) sched 10005 weight 0 lmax 0 pri 0 droptail
 sched 10005 type FQ_CODEL flags 0x0 0 buckets 0 active
 FQ_CODEL target 5ms interval 100ms quantum 1514 limit 10240 flows 1024 ECN
   Children flowsets: 10004 10002 10000
10002:  64.000 Kbit/s    0 ms burst 0
 sched 10002 type WF2Q+ flags 0x0 0 buckets 0 active
10003:  64.000 Kbit/s    0 ms burst 0
 sched 10003 type WF2Q+ flags 0x0 0 buckets 0 active
10000: 100.000 Mbit/s    0 ms burst 0
 sched 10000 type WF2Q+ flags 0x1 256 buckets 0 active
    mask:  0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
10001:  10.000 Mbit/s    0 ms burst 0
 sched 10001 type WF2Q+ flags 0x1 256 buckets 0 active
    mask:  0x00 0xffffffff/0x0000 -> 0x00000000/0x0000

Download pipe
- Bandwidth 290Mbit/s
- Scheduler:FQ-Codel
- FQ-Codel ECN on

Upload pipe
- Bandwidth 19Mbit/s
- Scheduler:FQ-Codel
- FQ-Codel ECN on

Queues:
Download Queue
- Weight 1
- Pipe: Download Pipe

Voip Download Queue
- Weight: 50
- Pipe: Download Pipe

Voip Upload Queue
- Weight: 50
- Pipe: Upload Pipe

Upload Queue
- Weight: 1
- Pipe: Upload Pipe

High Prio Queue
- Weight: 100
- Pipe: Upload Pipe

Rules:
Prioritize ACK
- #: 1
- Int: WAN
- Proto: tcp (ack)
- Src: 192.168.0.0/16 (my LAN supernet)
- Dest: any
- Target: high prio queue

Prioritize DNS
- #: 2
- Int: WAN
- Proto: ip
- Src: <ip addresses of my DNS boxes>
- Dest: any / port 53
- Target: high prio queue


Prioritize VoipUP
- #: 3
- Int: WAN
- Proto: ip
- Src: <ip addresses of my voip>
- Dest: any
- Target: Voip upstream queue

Prioritize Voip Down
- #: 4
- Int: WAN
- Proto: ip
- Src: <any>
- Dest: <ip addresses of my voip>
- Target: Voip downstream queue

Normal Upload
- #: 5
- Int: WAN
- Proto: ip
- Src: 192.168.0.0/16 (my LAN supernet)
- Dest: any
- Target: upload queue

Normal Download
- #: 6
- Int: WAN
- Proto: ip
- Src: <any>
- Dest: 192.168.0.0/16 (my LAN supernet)
- Target: Download Queue


Title: Re: Help w/ FQ-Codel
Post by: bimbar on February 04, 2022, 06:19:50 pm
First off, I'd disable ECN, just dropping the packets seems to work better.
Second, weighted queueing doesn't work with fq_codel, so you might as well just use one queue with weight 100 instead.