• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login
Netgate Discussion Forum
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login

FQ-CoDel - Join Me in this Bounty

Bounties
7
20
9.5k
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A
    AhnHEL
    last edited by Mar 20, 2015, 4:50 PM

    Pledging $20 to getting FQ-CoDel placed on top of the development TO DO List.  Hoping others will join in, considering increased interest in this feature.

    https://forum.pfsense.org/index.php?topic=87931.0

    https://forum.pfsense.org/index.php?topic=88503.0

    https://forum.pfsense.org/index.php?topic=88162.msg501320#msg501320

    AhnHEL (Angel)

    1 Reply Last reply Reply Quote 0
    • N
      Nullity
      last edited by Mar 20, 2015, 7:12 PM

      Should we wait for "cake" to be finalized?

      Here is a quote from the "Known Issues" section of this site: http://www.bufferbloat.net/projects/codel/wiki/Wiki/

      At very low bandwidths (e.g. .5Mbps) on ADSL, we're having to play with the target; Kathie did not have to in her simulations. This is due to inevitable buffering in htb or in the device driver. We have a version under development that does bandwidth limiting without buffering an extra packet, called cake. It's looking good so far.

      Here is a mailing-list post regarding the current state of "cake": https://lists.bufferbloat.net/pipermail/cerowrt-devel/2015-March/004243.html

      I am unsure whether cake applies to Linux or all codel implementations.

      Please correct any obvious misinformation in my posts.
      -Not a professional; an arrogant ignoramous.

      1 Reply Last reply Reply Quote 0
      • A
        AhnHEL
        last edited by Mar 20, 2015, 7:41 PM

        @Nullity:

        Should we wait for "cake" to be finalized?

        Thank you for that Nullity

        FQ-CoDel has been out since March of 2014 so I think it should be implemented in pfSense as an update asap since it is the current version of CoDel in use.

        Cake, as it states in your link is still in development.  I didnt see a possible release date.  Hopefully by then maybe it can be updated again as a drop in replacement to FQ-CoDel.

        I'll maintain my offer of the Bounty.

        AhnHEL (Angel)

        1 Reply Last reply Reply Quote 0
        • N
          Nullity
          last edited by Mar 20, 2015, 8:18 PM

          @AhnHEL:

          @Nullity:

          Should we wait for "cake" to be finalized?

          Thank you for that Nullity

          FQ-CoDel has been out since March of 2014 so I think it should be implemented in pfSense as an update asap since it is the current version of CoDel in use.

          Cake, as it states in your link is still in development.  I didnt see a possible release date.  Hopefully by then maybe it can be updated again as a drop in replacement to FQ-CoDel.

          I'll maintain my offer of the Bounty.

          I am very much in favor of updating our CoDel implementation, but I want to make sure we are spending our time/money wisely.

          If you look at the first link in your OP, it shows SFQ performs almost as well as fq_codel. We have our own implementation of an SFQ, FAIRQ. Considering that we may only gain a slight advantage over FAIRQ by implementing fq_codel, I say we wait for cake.

          Currently you can even choose FAIRQ then check the "Codel Active Queue" box, giving practically Fair Queue Codel. (I am unsure how well this actually functions.)

          Please correct any obvious misinformation in my posts.
          -Not a professional; an arrogant ignoramous.

          1 Reply Last reply Reply Quote 0
          • T
            tuffcalc
            last edited by Apr 21, 2015, 2:27 PM

            @Nullity:

            @AhnHEL:

            @Nullity:

            Should we wait for "cake" to be finalized?

            Thank you for that Nullity

            FQ-CoDel has been out since March of 2014 so I think it should be implemented in pfSense as an update asap since it is the current version of CoDel in use.

            Cake, as it states in your link is still in development.  I didnt see a possible release date.  Hopefully by then maybe it can be updated again as a drop in replacement to FQ-CoDel.

            I'll maintain my offer of the Bounty.

            I am very much in favor of updating our CoDel implementation, but I want to make sure we are spending our time/money wisely.

            If you look at the first link in your OP, it shows SFQ performs almost as well as fq_codel. We have our own implementation of an SFQ, FAIRQ. Considering that we may only gain a slight advantage over FAIRQ by implementing fq_codel, I say we wait for cake.

            Currently you can even choose FAIRQ then check the "Codel Active Queue" box, giving practically Fair Queue Codel. (I am unsure how well this actually functions.)

            Ok… so I changed my WAN traffic shaper to FAIRQ, limited to 95% of my upstream bandwidth, and created one default queue with codel active queue & default queue checked (nothing else checked and nothing else entered, i.e. no bandwidth limit) . It seems to be keeping my pings very low even on a fully saturated uplink (even lower than just using codel - about 18ms using my ISP's speedtest server).

            My goals are: (i) ease of setup (I don't want to set up a bunch of queues); and (ii) keep pings as low as possible when the uplink is fully saturated.  This new FAIRQ/Codel setup seems to do the trick, even when I drop the uplink bandwidth limit to less than 500kbps (I have one site that is on a slow DSL connection - hence wanting fq_codel that can also deal with slow links).

            Would appreciate it if some of you guys could also test and verify.

            Cheers

            1 Reply Last reply Reply Quote 0
            • N
              Nullity
              last edited by Apr 21, 2015, 9:57 PM

              Thanks for testing, tuffcalc! :)

              I will get some results to you by this weekend.

              Being that FAIRQ makes more of an impact as the number of simultaneous streams increases, properly testing it will not be easy. Well, I guess you could share a torrent… then consistency becomes a problem. Anyway, I will test a single stream for now.

              Please correct any obvious misinformation in my posts.
              -Not a professional; an arrogant ignoramous.

              1 Reply Last reply Reply Quote 0
              • H
                Harvy66
                last edited by Apr 22, 2015, 2:15 PM

                It looks to me that sch_cake is actually a traffic shaper, like HFSC, while fq_codel is strictly an AQM. fq_codel could still be useful because I don't think you'll be able to use sch_cake with HFSC, but you should be able to use fq_codel with HFSC.

                I wonder if sch_cake will support configurable sub-queues or it it's entirely supposed to be used as a "no knobs" schedulers that has codel logic built in.

                With the limited information in the mailing list, it sounds like sch_cake may not let the end user actually configure queue bandwidth. While the scheduler still needs to know the link bandwidth, it's main goal is to maintain low latency and to fairly distribute bandwidth while maintain low latency. It does understand Diffserv, but still "no knobs". It described high priority traffic as always low bandwidth, which may not be good for all situations, like where "high priority" bandwidth requires a large portion of the link's bandwidth, like a game or VoIP server. Or a 150man LoL LAN party.

                1 Reply Last reply Reply Quote 0
                • N
                  Nullity
                  last edited by Apr 22, 2015, 7:34 PM

                  @Harvy66:

                  It looks to me that sch_cake is actually a traffic shaper, like HFSC, while fq_codel is strictly an AQM. fq_codel could still be useful because I don't think you'll be able to use sch_cake with HFSC, but you should be able to use fq_codel with HFSC.

                  I wonder if sch_cake will support configurable sub-queues or it it's entirely supposed to be used as a "no knobs" schedulers that has codel logic built in.

                  With the limited information in the mailing list, it sounds like sch_cake may not let the end user actually configure queue bandwidth. While the scheduler still needs to know the link bandwidth, it's main goal is to maintain low latency and to fairly distribute bandwidth while maintain low latency. It does understand Diffserv, but still "no knobs". It described high priority traffic as always low bandwidth, which may not be good for all situations, like where "high priority" bandwidth requires a large portion of the link's bandwidth, like a game or VoIP server. Or a 150man LoL LAN party.

                  That is a bunch of assumptions…

                  Please correct any obvious misinformation in my posts.
                  -Not a professional; an arrogant ignoramous.

                  1 Reply Last reply Reply Quote 0
                  • H
                    Harvy66
                    last edited by Apr 22, 2015, 8:36 PM

                    Assumptions, yes, but good questions to investigate. Or at least I think so.

                    1 Reply Last reply Reply Quote 0
                    • N
                      Nullity
                      last edited by May 1, 2015, 8:08 PM

                      @tuffcalc:

                      @Nullity:

                      @AhnHEL:

                      @Nullity:

                      Should we wait for "cake" to be finalized?

                      Thank you for that Nullity

                      FQ-CoDel has been out since March of 2014 so I think it should be implemented in pfSense as an update asap since it is the current version of CoDel in use.

                      Cake, as it states in your link is still in development.  I didnt see a possible release date.  Hopefully by then maybe it can be updated again as a drop in replacement to FQ-CoDel.

                      I'll maintain my offer of the Bounty.

                      I am very much in favor of updating our CoDel implementation, but I want to make sure we are spending our time/money wisely.

                      If you look at the first link in your OP, it shows SFQ performs almost as well as fq_codel. We have our own implementation of an SFQ, FAIRQ. Considering that we may only gain a slight advantage over FAIRQ by implementing fq_codel, I say we wait for cake.

                      Currently you can even choose FAIRQ then check the "Codel Active Queue" box, giving practically Fair Queue Codel. (I am unsure how well this actually functions.)

                      Ok… so I changed my WAN traffic shaper to FAIRQ, limited to 95% of my upstream bandwidth, and created one default queue with codel active queue & default queue checked (nothing else checked and nothing else entered, i.e. no bandwidth limit) . It seems to be keeping my pings very low even on a fully saturated uplink (even lower than just using codel - about 18ms using my ISP's speedtest server).

                      My goals are: (i) ease of setup (I don't want to set up a bunch of queues); and (ii) keep pings as low as possible when the uplink is fully saturated.  This new FAIRQ/Codel setup seems to do the trick, even when I drop the uplink bandwidth limit to less than 500kbps (I have one site that is on a slow DSL connection - hence wanting fq_codel that can also deal with slow links).

                      Would appreciate it if some of you guys could also test and verify.

                      Cheers

                      I tested but I got poor results and do not know why. I will retest later, perhaps after defaulting the config.

                      Change of subject… Cake is ambitious. Egress and ingress shaping, perhaps ADSL ATM tuning... all sorts of goals, and all while being simple for the user to setup. Dave is awesome.

                      Please correct any obvious misinformation in my posts.
                      -Not a professional; an arrogant ignoramous.

                      1 Reply Last reply Reply Quote 0
                      • M
                        mcwtim
                        last edited by May 25, 2015, 4:49 PM

                        I'll pledge $100 to getting fq_codel added given how broken the current codel implementation is.

                        1 Reply Last reply Reply Quote 0
                        • H
                          Harvy66
                          last edited by May 25, 2015, 11:53 PM

                          @Nullity:

                          @Harvy66:

                          It looks to me that sch_cake is actually a traffic shaper, like HFSC, while fq_codel is strictly an AQM. fq_codel could still be useful because I don't think you'll be able to use sch_cake with HFSC, but you should be able to use fq_codel with HFSC.

                          I wonder if sch_cake will support configurable sub-queues or it it's entirely supposed to be used as a "no knobs" schedulers that has codel logic built in.

                          With the limited information in the mailing list, it sounds like sch_cake may not let the end user actually configure queue bandwidth. While the scheduler still needs to know the link bandwidth, it's main goal is to maintain low latency and to fairly distribute bandwidth while maintain low latency. It does understand Diffserv, but still "no knobs". It described high priority traffic as always low bandwidth, which may not be good for all situations, like where "high priority" bandwidth requires a large portion of the link's bandwidth, like a game or VoIP server. Or a 150man LoL LAN party.

                          That is a bunch of assumptions…

                          I forgot about this. I've been reading the bufferbloat.net archives and they do mention many times that cake has traffic shaping built in and is meant to be the traffic shaper. This means it cannot be used in conjunction with HFSC. Their goals seem to be to tightly couple the shaper with the AQM which gives them a lot more information and better scheduling. The down side is cake seems to have a lot more corner cases than fq_codel, it also means you can't tag and shape different traffic types like you can with HFSC.

                          I would still prefer to use HFSC+fq_codel instead of just cake. I want to actually shape my traffic, not just make sure it's "fair".

                          Some of the discussions about making making changes to cake are around getting bufferbloat to some really really low single digit milliseconds or possible fractional. to me that seems like pure overkill to give up the configurability of HFSC. Cake does have some stuff that makes it work better with the scheduling difference between DSL, Cable, and ATM. I guess fq_codel doesn't do as well when packets are grouped/batched and bursted and the timings are in tens of milliseconds. I guess that explains why my first hop for cable was almost always 10ms+ no matter what.

                          1 Reply Last reply Reply Quote 0
                          • N
                            Nullity
                            last edited by May 26, 2015, 12:13 AM

                            It seems like cake depends on many Linux-only features.
                            I doubt cake will ever be ported to *BSD.

                            FQ_CODEL, or a proper combining of FAIRQ+CODELQ (CoDel seperatey applied on a per hash basis), are our best hope.

                            Anyone know what $$$ goal we should be aiming for?

                            Please correct any obvious misinformation in my posts.
                            -Not a professional; an arrogant ignoramous.

                            1 Reply Last reply Reply Quote 0
                            • D
                              dtaht
                              last edited by Jun 2, 2015, 7:04 PM

                              A string of messages on this thread need corrections:

                              @AhnHEL : 1) fq_codel entered the linux kernel may 11, 2012, not march 2014.

                              1. Codel is the drop (aqm) algorithm. FlowQueue is the fair queuing algorithm. The two, while tightly intertwined in the fq_codel code should be thought of as two separate things, that evolve somewhat independently. It is possible to have a sfq+codel,drr+codel,wfq+codel… (in fact, these all exist) or a sfq+red,fq+pie (both of these exist also) variant of these combinations. As near as I can tell the pfsense FAIRQ is sfq-like, and the combination of FAIRQ + codel is pretty close to what we did with fq_codel.

                              https://tools.ietf.org/html/draft-ietf-aqm-codel-01

                              https://tools.ietf.org/html/draft-hoeiland-joergensen-aqm-fq-codel-01

                              One of my struggles is also to get people to not conflate the added shapers' behavior on top of these. It is the soft rate limiting in hfsc/htb etc that eats all the cpu, not these algorithms. In the cases where you can run at line rate (or hardware flow control is in use) the new aqms (pie and codel) do GREAT with no software rate limiting needed.

                              1. Yep, there is no release date for cake. And funding runs out next month.

                              2. @Nullity: "If you look at the first link in your OP, it shows SFQ performs almost as well as fq_codel. We have our own implementation of an SFQ, FAIRQ. Considering that we may only gain a slight advantage over FAIRQ by implementing fq_codel, I say we wait for cake."

                              there are two considerations - interflow latency ( which FQ helps ) and within a flow latency (which aqm helps). Measuring the former is fairly easy with the tools like fq_codel, the dslreports test, etc. Measuring the latter involves taking apart packet captures.

                              I would certainly like to be able to measure how well FAIRQ + codel functions. Flaws I can see in the combination are a much larger outside packet limit, a smaller number of potential hash slots, and per-packet fairness has some flaws over byte fairness. Still it does look like a viable combination for y'all.

                              We are always encouraging folk to install the tools we use to measure bufferbloat (https://flent.org) on their systems, and measure. We have a few billion machines to fix and it helps to not have to poke into them all - and to find champions to drive their favorite OSes to do more of the right thing(s).

                              @ Harvy66 - no, cake contains a traffic shaper (like htb, not hfsc), and it can be on or off. it also contains the latest fq and codel ideas. If you could express what you want (or have) for a configuration we'd gladly discuss it on the cake list. We have "modes" where we can allocate bandwidth amongst up to 8 classes of queues, and it is very easy to add a new "mode" - if only we knew what modes were desirable.

                              It is my hope to find (far) less than 20 modes that cover 99% of all use cases.

                              "The down side is cake seems to have a lot more corner cases than fq_codel, it also means you can't tag and shape different traffic types like you can with HFSC." -

                              the hope it is has less corner cases than fq_codel did (notably it works down to 64kb bandwidth with no tuning), far less than sqm-scripts did (for atm etc),

                              ... and a head to head comparison with what people actually do with HFSC seems to be increasingly needed.

                              1 Reply Last reply Reply Quote 0
                              • D
                                dtaht
                                last edited by Jun 3, 2015, 4:54 PM

                                In terms of the bounty problem:

                                fq_codel was written in a single saturday afternoon by "net ninja" eric dumazet, who had a flash of insight (after about 9 months of work on predecessors) about how to use DRR instead of SFQ to solve all the remaining problems we had in one go. It, like codel before it, took about a week to have the biggest bugs wrung out and for it to go kernel mainline, and there has been a steady evolution of incremental improvements since, based on ever bigger data sets against more and more hardware and flow types.

                                There are several things that I would like to change about fq_codel (notably using byte, rather than packet limits) that are constrained by the existing API, and this is partially why we have been (after 2 years of doing one-off alternatives) trying to wedge all the best ideas into one more testable-at-scale set of algorithms, currently called cake.

                                Not knowing enough about bsd myself to port the mere ~300 lines of fq_codel code, bootstrapping myself up to get it to work would take several weeks, and to clean up and polish the work several more. But it is worse than that, I am informed, for example, that the ALTQ infrastructure is going away in a future release of freebsd. Finding that BSD expert to partner up with would shave quite a bit of bootstrap time - honestly it's a days work to port (and a week to polish) this tiny amount of code if that someone could be found.

                                Otherwise, the available bounty of about 150 dollars? is about 59,850 dollars short of the actual engineering time it would take to do.

                                My emphasis has therefore been to find an existing BSD expert to partner up with ( and/or a grad student with infinite spare time), a company that cares enough about bsd to sponsor the work, and to fully document the algorithms in ietf drafts.

                                But it is worse than that in that there are several known unknowns in BSD that would take more time to code up - notably an efficient timestamping facility is needed by codel (which seems to be the case on pfsense but nobody has benchmarked higher rates), and some gnarly IP header hashing functions may or may not exist.  And I have no clue whatsoever what the replacement for ALTQ will look like.

                                So as much as I like the idea of improving pfsense and am willing to help, finding and funding that BSD expert would be the first barrier.

                                1 Reply Last reply Reply Quote 0
                                • H
                                  Harvy66
                                  last edited by Jun 15, 2015, 11:23 PM

                                  I know ALTQ is the scheduler part, do changes to it break anything with the queues? If it doesn't, then work done for fq_codel now won't be lost with ALTQ changes.

                                  With ALTQ, packets can be assigned to queues for the purpose of bandwidth control. The scheduler defines the algorithm used to decide which packets get delayed, dropped or sent out immediately

                                  1 Reply Last reply Reply Quote 0
                                  • C
                                    cplmayo
                                    last edited by Dec 12, 2015, 6:00 PM

                                    I would love to see fq_codel or better yet an implementation of cake_codel into PfSense. I toyed with IPFire with the hope of getting these features but found overall that IPFire was very weak when compared to PfSense and choose to stick with it regardless of QoS Limitations that I saw. currently running Fairq with Codel sub queues and I am getting about the best reduction in buffer bloat that I have seen.

                                    Depending on need I would be more than willing to throw at least $100 into the bounty to get a native implementation of either fq_codel or cake_codel into this distro.

                                    1 Reply Last reply Reply Quote 0
                                    • N
                                      Nullity
                                      last edited by Dec 13, 2015, 8:04 AM

                                      fq_codel is already coming to FreeBSD (and most likely pfSense), but it will not be an ALTQ queueing discipline, it will instead be implemented within "dummynet", which is what pfSense calls "limiters".

                                      Whether this will be useful to us, I do not know, but it sure seems like good news to me.

                                      http://comments.gmane.org/gmane.os.freebsd.devel.net/47124

                                      Please correct any obvious misinformation in my posts.
                                      -Not a professional; an arrogant ignoramous.

                                      1 Reply Last reply Reply Quote 0
                                      • C
                                        cplmayo
                                        last edited by Dec 13, 2015, 7:45 PM

                                        @Nullity:

                                        fq_codel is already coming to FreeBSD (and most likely pfSense), but it will not be an ALTQ queueing discipline, it will instead be implemented within "dummynet", which is what pfSense calls "limiters".

                                        Whether this will be useful to us, I do not know, but it sure seems like good news to me.

                                        http://comments.gmane.org/gmane.os.freebsd.devel.net/47124

                                        Implementing fq_Codel in the limiters should work well and be easy to setup. Also I think it will allow the limiters to function better. I still think that cake_Codel is the future and hope it will be implemented in BSD.

                                        I have tried HFSC, PRIQ, and CBQ all of these did a good job of keeping my internet running smoothly but bufferbloat was always a problem. I have since found that FairQ with Codel as the scheduler I do not have to limit my Bulk traffic and my network performance is largely unaffected.

                                        1 Reply Last reply Reply Quote 0
                                        • N
                                          Nullity
                                          last edited by Dec 14, 2015, 7:05 AM

                                          @cplmayo:

                                          @Nullity:

                                          fq_codel is already coming to FreeBSD (and most likely pfSense), but it will not be an ALTQ queueing discipline, it will instead be implemented within "dummynet", which is what pfSense calls "limiters".

                                          Whether this will be useful to us, I do not know, but it sure seems like good news to me.

                                          http://comments.gmane.org/gmane.os.freebsd.devel.net/47124

                                          Implementing fq_Codel in the limiters should work well and be easy to setup. Also I think it will allow the limiters to function better. I still think that cake_Codel is the future and hope it will be implemented in BSD.

                                          I have tried HFSC, PRIQ, and CBQ all of these did a good job of keeping my internet running smoothly but bufferbloat was always a problem. I have since found that FairQ with Codel as the scheduler I do not have to limit my Bulk traffic and my network performance is largely unaffected.

                                          Cake will never come to BSD. Cake is deeply entrenched in Linux-only features. Many of the features do not exist at all in BSD, so the whole porting effort would be very complicated and/or expensive.

                                          Please correct any obvious misinformation in my posts.
                                          -Not a professional; an arrogant ignoramous.

                                          1 Reply Last reply Reply Quote 0
                                          • First post
                                            Last post
                                          Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.