Traffic shaper decimates my WAN speed…

  • Hardware: Intel(R) Atom(TM) CPU C2558 @ 2.40GHz, 8GB of RAM.
    It's a Supermicro ITX board, but the C2558 instead of the C2758.
    NICs are all igb (integrated).

    I have a 300 Mbps downstream, 20 Mbps upstream service from Spectrum / TWC.  They overprovision approximately 15% (345 / 23), I'm setting my shaper values to 344 / 22.

    I walk through the shaper wizard (either "multi" or "Single" it doesn't seem to matter, I only have one active LAN and WAN interface on the box). My wizard settings are very minimal - I bump the priority of a few gaming services, along with a few other latency-sensitive things (DNS, RDP, SSH, FaceTime, etc - all stuff picked from the wizard).

    After applying the shaper, I run a speed test, and I'm lucky to see 200Mbps down and can't even hit 20 up either (falling off around 17-19Mbps most of the time).  This happens with various speed tests at various times of day so I'm pretty sure it's not just a transient internet thing. I've been using an on-net server (TWC/Spectrum in Columbus OH, I'm up in Cleveland so it's one of the "closest" tests I have that isn't leaving my ISP).

    Plus, if I remove the shaper config and test again, I will hit rated speed without a problem.

    I've tried removing and then re-running the wizard 3 different times with the different queue types (CBQ/PRIQ/HFSC) and the same problem seems to crop up with all queue types.

    It doesn't seem to be a CPU problem; if I ssh into pfSense and watch 'top', I'm seeing maybe 5-7% CPU usage from interrupts and basically nothing else. No cores are pegged or anything.

    Am I doing something wrong? I kind of expect the wizard to create a functional config, not one that can't keep up with my service… Open to any pointers I can get here.

    Rules.debug is showing the following for altq - the wizard created these with these values, I'm slightly confused by the bandwidth numbers since the download is higher than I entered in the wizard...
    igb0 is WAN, igb1 is LAN.

    altq on igb0 priq bandwidth 22200Kb queue {  qACK,  qDefault,  qP2P,  qGames,  qOthersHigh,  qOthersLow  } 
     queue qACK on igb0 priority 6 priq (  ecn  )  
     queue qDefault on igb0 priority 3 priq (  ecn  , default  )  
     queue qP2P on igb0 priority 1 priq (  ecn  )  
     queue qGames on igb0 priority 5 priq (  ecn  )  
     queue qOthersHigh on igb0 priority 4 priq (  ecn  )  
     queue qOthersLow on igb0 priority 2 priq (  ecn  )  
     altq on igb1 priq bandwidth 352256Kb queue {  qLink,  qACK,  qP2P,  qGames,  qOthersHigh,  qOthersLow  } 
     queue qLink on igb1 priority 2 qlimit 500 priq (  ecn  , default  )  
     queue qACK on igb1 priority 6 priq (  ecn  )  
     queue qP2P on igb1 priority 1 priq (  ecn  )  
     queue qGames on igb1 priority 5 priq (  ecn  )  
     queue qOthersHigh on igb1 priority 4 priq (  ecn  )  
     queue qOthersLow on igb1 priority 3 priq (  ecn  )  

    If anybody needs further detail please let me know and I will add… This is a pretty basic config and I don't have anything crazy going on though. No Snort or Suricata or anything like that.

  • did you increase your queue size or enable codel?

  • I simply deleted the wizard and then ran it again with new values for up and down speed. Previously my circuit was 120x10 and the shaper didn't seem to have any problems keeping up with that.

    I know almost nothing about how all this shaping stuff works… which is why I used the wizard. ;)

  • Since you're not sure, just go under each queue and check "Codel Active Queue". See if that helps.

    Personally, my recommendation is to just use FairQ as the sharper for both up and down, just have a single Default queue, and check "Codel Active Queue". It might be good enough for you or least get you by while you learn how traffic shaping works.

Log in to reply