I can't seem to find any docs that answer my question on LLQ so here it goes...
Say I have a 1544K interface (T1) with a service policy applied on the output. If the priority queue is configure for 512, does that reserve that bandwidth only for that class?
If that class is not being used, may other classes (e.g class-default) use that bandwidth?
Is this too simple an explanation, or is there more too it?
The searching on CCO seems to have gone dramatically downhill over the last few months. Unless you search for specific phrases you end up with lots of repeated information.
Anyway I had a .PDF document I saved from a while ago and searched on its title and this came up:
I think this has all the information you need.
I cant answer your question but i think this document can. Ive found it to be very useful in the past.
This should answer your queries about unused bandwidth for LLQ and CBWFQ. In short, with LLQ during periods of non-congestion YES other traffic class can use any unused bandwidth and during periods of congestion NO the bandwidth is strictly reserved for LLQ.
I highly recommend taking a look at this document which I found to be very useful.
Although the bandwidth guarantees provided by the bandwidth and priority commands have been described with words like "reserved" and "bandwidth to be set aside", neither command implements a true reservation. In other words, if a traffic class is not using its configured bandwidth, any unused bandwidth is shared among the other classes.
The queueing system imposes an important exception to this rule with a priority class. As noted above, the offered load of a priority class is metered by a traffic policer. During congestion conditions, a priority class cannot use any excess bandwidth.
Excellent explanation by Sundar as always, as a simple answer for your question, Yes, at periods of no congestion any traffic can use any bandwidth with no restrictions, while at periods of congestion, the traffic guarantees are forced. Keeping in mind that LLQ has unique considerations, with the legacy QoS, PQ had a huge drawback which was starving the lower priority traffic, and thus LLQ solved this drawback via policing the PQ, LLQ has an embedded policing function which in the case of congestion polices the LLQ traffic with the configured value to prevent it from starving the other lower priority traffic. Another thing to take care of with LLQ, is that it doesn't just guarantee bandwidth, but it also moves the LLQ packets from the tail of the queue to the head of the queue, at the moments of no congestion, extra packets (over the configured via the priority command) are not moved to the head of the queues, but they are not policed until there is congestion.
I hope that i've been informative.
If there's interface congestion, LLQ traffic always goes first.
The bandwidth setting for LLQ makes a policer which will drop any LLQ packets that exceed the bandwidth setting if there's interface congestion.
Other non-LLQ traffic may use all available bandwidth not being used by LLQ.
Thanks again I will give you all good ratings for your input :) A few things I want to clarify, but let me explain what I have picked up.
-LLQ gets served first during congestion.
-LLQ does not "burst" above its configured bandwidth or percentage.
I will use an example to describe what I want to know. I have a T1 link with bandwidth configured as 1544K.
Suppose I have following class maps:
match dscp ef
match dscp af31
match dscp af21
And I have this policy:
Then I apply this to the interface:
interface serial 1/0
service-policy output POLICY
If there is no traffic that matches the VOIP class, will classes COS2 and COS3 be able to take more than the 1024 left behind by VOIP?
In other words would I be able to push 600k of COS2 and 600k of COS3 if no COS1 is present?
Or would there be other parameters needed to prevent or allow this behavior?
I am putting together a lab and I will explain what I see. Perhaps then I can be sure, but first I want to know if I understand the theory.
If there was no voice, either COS2 or COS3 could use all bandwidth, 1544. If still no voice and both COS2 and COS3 wanted all, since their bandwidth allocations are the same, each should obtain half.
If there was voice, either could obtain all remaining bandwidth not used by voice, or again if both wanted all, they would spit available bandwidth 50/50.
Same results if:
Thank you Matthew and Andrew for the links. Sundar, Mohammed , and Joseph your explanations were great.
I did do a lab I found exactly as you were saying, my lower priority CBWFQs were able to use bandwidth not used by the LLQ.
Suppose you didn't want this behavior, how could you stop it?
Perhaps a nested MQC (with COS2 and COS3) with policing?
Thanks again for your input...
You can limit bandwidth within a class by using a shaper or policer; you're not required to have a nested policy.
e.g. (pseudo config)
shape average 512000
However, if you just want to bias bandwidth when multiple non-LLQ classes desire all the bandwidth, set different bandwidth allocations.
In the above example, either COS2 or COS3 may obtain the full link's bandwidth, but if they both want all available, they will split it in a 4:1 ratio, or COS2 will obtain 80% and COS3 20%.
Hi guys, maybe I'm a bit late but I'd like to add a question on this topic.
Let's suppose LLQ queue is allocated 1Mbps.
During a long burst, LLQ traffic is 2Mbps, and the output interface is 10Mbps so that no congestino occurs.
No other traffic around.
Should I observe any drop?
Thank you in advance, and sorry if it may sound too dumb..