How to set up fq_codel for QoS traffic shaping

Started by deviantintegral, January 02, 2017, 09:07:25 PM

Previous topic - Next topic
I'm trying to get a reasonable QoS setup for my 25/2 cable internet connection. There's great docs for setting up regular QoS rules, but since DSCP support was removed I think I need something more robust for my needs. And, I love the idea of never having to tweak the rules for specific apps :D

For reference, an unshaped result from flent rrul -p all_scaled -l 60:



I then set up:


  • A downstream pipe with a cap of 20600Kbps, a source mask, the FlowQueue-Codel scheduler, Codel enabled,no ECN as I read that's detrimental at under an upstream of 4Mbits.
  • An upstream pipe set to 1500Kbps, with a destination mask, and the same queue and Codel settings
  • No queues as my understanding from the help text is those are automatic when masks are set.
  • Two rules with source and destination networks to associate traffic with each pipe.



Latency is vastly improved, though I'm curious about the spike I'm getting at the very end. What I'm more concerned about are the gaps in the upload graph. I expected with setting the pipes significantly lower than my actual connection I wouldn't see any missing traffic. They're still there even with lower caps on the pipes. I haven't seen any similar results from others, so I'm not sure how to interpret this. Any ideas?

I was reading up and came across this post showing results over a slower DSL connection, that corresponded pretty closely to my cable connection. Luckily, my ISP redid their packages, and it was very inexpensive to go from a 25/2 to a 30/5 connection. Updated the bandwidth limits, and I'm seeing way fewer drops on the upstream:



Perhaps there's not many using OPNSense on slower connections, but I've rarely seen flent tests with less than 5MBit upstream. Anecdotally, the experience was pretty horrible on fq_codel until I had more bandwidth for it to work with. I wonder if there's some way to alert users when setting the pipe configs if they're allocating less than the scheduler needs to be effective.