Status of FAIRQ scheduler

  • I noticed the code about FAIRQ in /etc/inc/ as one more queuing scheduler in addition to HFSC/CBQ/PRIQ.

    Assuming it refers to the 2008 work by Matt Dillon:

    Fair Queuing For ALTQ

    "I have a question for the PF/ALTQ masters out there," Matthew Dillon began on the DragonFlyBSD kernel mailing list, having recently switched from using a Cisco router to a DragonFlySD server running PF. "I am trying to configure PF in a manner similar to what Cisco's fair-queue algorithm does. Cisco's algorithm basically hashes TCP and UDP traffic based on the port/IP pairs, creating a bunch of lists of backlogged packets and then schedules the packets at the head of each list." He went on to explain that he was unsuccessfully trying to configure the same thing with PF, "neither CBQ nor HFSC seem to work well. I can separate certain types of traffic but the real problem is when there are multiple TCP connections that are essentially classified the same, and one is hogging the outgoing bandwidth. So the question is, is there a PF solution for that or do I need to write a new ALTQ mechanic to implement fair queueing?"

    Not finding a solution, he followed with a series of patches implementing what he needed. He explained the resulting logic noting, "unless something comes up I am going to commit this to DragonFly on Friday and call it done. I would be pleased if other projects picked up some or all of the work":

    "The queues are scanned from highest priority to lowest priority; if the packet bandwidth on the queue does not exceed the bandwidth parameter and a packet is available, a packet will be chosen fro that queue; if a packet is available but the queue has exceeded the specified bandwidth, the next lower priority queue is scanned (and so forth); if NO lower priority queues either have packets or are all over the bandwidth limit, then a packet will be taken from the highest priority queue with a packet ready; packet rate can exceed the queue bandwidth specification (but will not exceed the interface bandwidth specification, of course), but under full saturation the average bandwidth for any given queue will be limited to the specified value."

    However, since FAIRQ is no longer available as an option in pfsense's webGUI and there are no references to it in the wiki, does it mean it has been superseded / replaced ?


  • I am sorry but it is there!
    You sure you are using 2.0?

  • Its an option on 2.0. I don't have any experiencing using it as I use PRIQ for my setup right now.

    2.0 has the following options for Traffic Shaping:


  • I asked because FAIRQ isn't listed in any of the 2.0 traffic shaping wizards, nor is it mentioned in the wiki pages. In both cases only HFSC/CBQ/PRIQ are listed. But you're right, FAIRQ is available in the traffic shaping settings.