CBQ borrowing within class broken?



  • Hi everybody,

    I'm having a simple setup with a single LAN and WAN connection. I wanted to do inbound traffic shaping on a symmetric 4MBit connection. So I thought it would be nice to have a class for VoIP traffic, fixed to 200kbit/s, and one for other stuff fixed at 3800kbit, which I subdivided into ACK(700kbit), Default(3000kbit) and Background(100kbit) traffic (these should share bandwidths, i.e. I enabled borrowing on all of these subclasses). The DS_Limit and US_Limit classes have borrowing disabled, see attached image.

    Unfortunately my qDefault traffic is now limited to it's own 3000kbit bandwidth and does not borrow from qACK or qBackground.

    Any ideas how to accomplish that? Is this a bug, or a misunderstanding from my side?



  • Ok, here's a little correction to my above findings: enabling and disabling "borrow" on qDefault actually makes a difference. My measurement was probably a little inaccurate; it seems that with "borrow" enabled qDefault gets around 3300kbit bandwidth. Disabling "borrow" i can confirm it only get 3000kbit as expected.

    But why doesn't it borrow the entire bandwidth all the way up to 3800kbit which it could use inside the DS_Limit by eating up the bandwidths of qBackground and qACK?



  • How are you testing this?

    If you're trying to max-out your Default queue by downloading something, then that's gonna require some ACKs to be sent, so qDefault cannot possibly utilize all of qACK.



  • Thats a good point. I just watch the download speed on a PC or the traffic graph in pfSense. And I do see ACKs flowing out on the WAN interface of course, but that shouldn't influence the borrowing of downstream queue capacity, right? And the ACK queue has 700kbits reserved and I only see about 100-125kbits of ACKs.