Limiter and weight 2.4.4 rc



  • I am trying to make a guest vlan get full speed but when land is using bandwidth vlan gets example 30 percent of bandwidth but when I test this out the bandwidth split evenly. This is what I am doing

    Create a limiter Download
    enable it
    250mbps
    fq_codel
    Create a child limiter
    enable it
    destination address
    weight 80
    second child
    enable it
    destination address
    weight 20

    So choosing the child limiter with 20 weight in the guest firewall rule vlan the vlan still can split the bandwidth evenly with the LAN. Is there something wrong with my rules?

    0_1537873016096_1.PNG

      ![0_1537873034315_2.PNG](/assets/uploads/files/1537873037470-2-resized.png) ![0_1537873051941_3.PNG](/assets/uploads/files/1537873053695-3-resized.png)
    

    0_1537873297446_2.PNG

    0_1537873320815_3.PNG

    0_1537873339867_4.PNG

    0_1537873356948_5.PNG

    0_1537873375940_6.PNG



  • FQ_codel does not allow priorities/weights, you should use QFQ scheduler + Codel queues.



  • This is interesting - I thought I had fq_codel working with weighted queues when I was using it prior to 2.4.4 (even ran some tests back when I first set it up). But it could very well be that @bafonso is correct and it does not work anymore.

    One thing you could try - if you remove the masks from the queues and limiters, do you see any difference?



  • @bafonso Oh, that's interesting! I did not know.
    So Codel/QFQ is the best option to have traffic limiters with different weighted child pipes?



  • Fq_codel has never had weights. I did check the freebsd src code to make sure about their implementation and sure enough, there are no weights or priorities.

    I have qfq working ok for me. I would advise you testing different schedulers and see how they work for you. It is definitely a good start point.. :)



  • @tman222 said in Limiter and weight 2.4.4 rc:

    One thing you could try - if you remove the masks from the queues and limiters, do you see any difference?

    I tried removing them but it does not work. Looks like as bafonso says, unfortunately, It can't be done



  • Hi @Chrismallia - yes, after doing some more reading I would agree that @bafonso is correct. QFQ and weighted queues is the way to go here. Here's how I would set things up in your case:

    If you are interested in bandwidth guarantees per subnet (vs. per host), weighted child queues present a good option. In your case, I would setup a up and down limiter with appropriate bandwidth, choosing QFQ as the scheduler in each. Then create two child queues underneath each limiter. Make sure each each queue gets the appropriate weight (80 or 20). Finally enable Codel as well on each queue to help keep bufferbloat under control. Run some tests to make sure you are getting the desired bandwidth guarantees.

    Also, a good reference link to check out:
    https://www.hyperois.com/members/knowledgebase.php?action=displayarticle&id=1

    Hope this helps.



  • Hi, guys.
    "Weight" in limiter is broken after 2.4.X.
    I've tested similar setup in 2.3.5 - and it works perfectly.
    Hope team will fix it.



  • @teymur_bagirov Can you layout how you have your limiters and queues configured and I will try and recreate the issue?



  • @uptownvagrant sure.
    I have 2.3.4, 2.3.5 and two latest 2.4.4 virtual machines in Hyper-v
    All of them have limiters:

    DLtest with 2000 kbit/s bandwidth and 2 queues
    DLtestGuest with mask "Destination addresses" and Weight 2
    DLtestMain with mask "Destination addresses" and Weight 8

    ULtest with 2000 kbit/s bandwidth and 2 queues
    ULtestGuest with mask "Source addresses" and Weight 2
    ULtestMain with mask "Source addresses" and Weight 8

    Two different Rules for two test PCs with corresponding IN/OUT Pipe:
    ULtestGuest DLtestGuest
    ULtestMain DLtestMain

    I download ubuntu ISO and these 2 Downloads correctly share bandwidth 1 to 4 (the same as 2 to 8), but it happens only on 2.3.X pfsenses. The Pfsenses 2.4.4 always try to share bandwidth 50/50 ignoring "Weights" in queues.



  • @teymur_bagirov On your 2.4.4 VMs, can you try changing your limiter scheduler from FIFO to QFQ and testing again? It appears you are running into bug 8973 when using FIFO.

    In my lab I replicated your config but changed the bandwidth to 50Mbps, used QFQ as the scheduler and DropTail as the AQM for the pipe and queues. In the graph below, netperf2 is using the queue with weight 2 and netperf3 is using queue with weight 8.
    0_1542660532098_QFQ_weight_2_8.png



  • Looks like the bug 8973 notes also mention an issue with QFQ producing "kernel qfq_dequeue BUG/* non-workconserving leaf */" syslogs and crashing. I'm trying to confirm in my lab if this is QFQ when used with any AQM or just with CoDel. The recommendation is to use the Round Robin scheduler on the limiter and CoDel AQM on the queues.



  • Hello, All.
    It seems like 2.4.4-RELEASE-p1 now is ok with limiters.
    The only thing i changed: Scheduler from FIFO to QFQ.

    Happy New Year!