Regarding BW guarantees on CBWFQ

Hello All,
When allocating bandwidth to different classes using CBWFQ, is there a setting in Cisco that defines whether a class can/cannot utilize other queues when traffic exceeds the allocated/guaranteed bandwidth?
The assumption is there is no variation in priority settings.
Im working with Juniper, and am being told that bandwidth can essentially only be guaranteed if queue sharing is disabled. Id like to confirm Cisco documentation on whether there is something similar.

Hello Patrik

This was interesting to research because it seems that Cisco doesn’t publish the details of how its CBWFQ algorithm achieves the QoS functions. All the information I found was based on experimentation and analysis that various users have performed.

To answer your question truthfully, it seems that there is no way to allow or disallow the use of other queues (if they are empty) in the event that another queue has exceeded the allocated bandwidth. However, by default, it seems that if some queues are indeed empty, and do not need their bandwidth for a short period of time, that bandwidth is proportionally allocated across the other classes.

Remember, the CBWFQ scheduler, based on the class configurations, guarantees a minimum percentage of a link’s bandwidth. If it’s available, a higher percentage will be used as described above.

I hope this has been helpful!


1 Like

Thank you for researching this topic! I suppose the detailed behavior of each vendor can sometimes only be inferred through testing.
The issue I’m facing with a customer involves the seeming lack of a BW guarantee using CBWFQ on a Juniper device to which JTAC responded, that is to be expected unless overflowing queues are prevented from sharing the BW of queues determined to be “available.”
Despite what JTAC said, our recent lab tests nevertheless seem to indicate that a BW guarantee is in effect, so it’s unclear what’s causing the differences with production traffic. Assuming bursty traffic is somehow involved, but curious on the span in which BW allocation is actually guaranteed. For example, across one or multiple time intervals (TCs) of committed bursts(BCs).
I suspect this level of detail might not be disclosed by the vendor and it depends on factors such as shaping vs line rate

Hello Patrik

Hmm, that’s curious.

So did they make a suggestion as to how you can achieve what you need? It seems strange to simply say that there is no bandwidth guarentee unless overflowing queues are prevented from sharing. How do you prevent them from sharing, and is that an option for your topology? Is there a configuration parameter that configures that? CBWFQ by definition guarantees a minimum bandwidth to each class when there is congestion.

In any case, I’d be interested to hear how this plays out. If it’s not too much trouble, keep us posted and let us know of the resolution…