01-06-2025 05:56 AM - edited 01-06-2025 05:57 AM
Hello, everyone.
I understand that we configure classes to classify our traffic. Then, inside our policy maps, we can apply certain bandwidth reservations to them. Then, during the times of congestion, they have the guaranteed minimum bandwidth (max bandwidth in the case of LLQ) and the CBWFQ scheduler schedules the traffic from the respective queues.
So my question is pretty straightforward. When it comes to QoS, do the bandwidth or priority commands actually create queues upon being issued? Or how does this work?
If I have a class called TELNET that matches Telnet traffic and has no bandwidth allocated to it, how exactly will be it be queued? Will it use the same amount of bandwidth as class-default? Which I believe uses the remaining bandwidth after we allocate everything to our classes.
Thank you.
David
01-06-2025 06:28 AM
When you assign bandwidth to a class within a policy map, a dedicated queue is associated with that class. The bandwidth specifies the guaranteed minimum bandwidth during times of congestion, a queue is a buffer where packets are stored temporarily before being transmitted out of an interface, there are several types of queue with the typical bandwith assignment it will use something known as Class-based weighted fair queuing were each class of traffic gets its own queue with a guaranteed minimum bandwidth during congestion.
for e.g if you look at a configuration like
class-map match-any VOICE
match dscp ef
class-map match-any VIDEO
match dscp af41
policy-map QOS_POLICY
class VOICE
priority 100
class VIDEO
bandwidth 200
class class-default
fair-queue
interface GigabitEthernet0/0
service-policy output QOS_POLICY
Voice Class is assigned to the strict-priority queue with a cap of 100 kbps.
Video class is assigned to a queue with a guaranteed minimum of 200 kbps.
Default class uses WFQ for fair treatment of unmatched traffic.
01-06-2025 07:27 AM
First, I don't recall Cisco documenting what's the bandwidth value that will be used when not explicitly defined.
Often, I'll see people will assume what happens, but even if they can demonstrate their predicted results on a specific platform, can they guarantee it works the same on all platforms both now and future?
(NB: I believe I mentioned this in a reply to one of your other QoS posts, but Cisco changed QoS results, in some cases, between pre-HQF and post-HQF using exactly the same configuration! I.e. upgrade IOS, different QoS processing.)
So, I always highly recommend you explicitly define the bandwidth, when using it.
As to the class and queue relationship, it's not always one queue per policy class, even excluding child policies.
Traditionally, all policy priority classes share a single queue, but some later IOSs now provide an optional second queue, all shared by all policy classes using it.
Bandwidth classes, unless using FQ, each have their own queue.
If FQ is configured, it creates a set of hashed flow queues. Pre-HQF, each of those hashed flow queues were each handled just like a single bandwidth class queue. Their actual dequeuing priority was computed based on the flow's IPPrec and class bandwidth setting, also compution differed based on IOS. (I recall, there were two formulas, based on before or after a specific IOS version/release.)
FQ pre-HQF, was actually WFQ, but post-HQF, FQ.
FQ, for post-HQF, although there's multiple hashed flow queues, class dequeuing adheres to what a single, ordinary, bandwidth class queue would provide. Basically, in this class, FQ operates much as a child policy would. You might think of it as an implicit, specific, child policy.
In above, I mention hashed flow queues. Basically, FQ will allocate a fixed number of flow queues (some IOS versions allow additional configuration of those flow queues, traditionally, many did not) and actual flows are hashed to a specific flow queue - conceptionally, much like Etherchannel.
01-06-2025 07:04 AM
01-06-2025 07:34 AM
Take note of what I've bolded from the provided reference. . .
This section explains how the queueing system distributes any remaining bandwidth. Here is how the Class-Based Weighted Fair Queueing Feature Overview describes the allocation mechanism: "If excess bandwidth is available, the excess bandwidth is divided amongst the traffic classes in proportion to their configured bandwidths. If not all of the bandwidth is allocated, the remaining bandwidth is proportionally allocated among the classes, based on their configured bandwidth."
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide