CBWFQ Algorithm

Hello All,

I have two questions to verify my concept about CBWFQ,

  • Let's assume i have four classes, Voice (PQ), Critical Data, BE and Scavenger. As per CBWFQ algorithm, at the time of congestion BW is allocated to each class as per configuration in the policy maps to their specified bandwidth allocations as minimum BW guranteed. PQ cannot exceet it's allocated BW, but Critical Data can rob BW from the Default class if more Critical data is coming in the router. Is this concept correct? High priority traffic like critical data can rob BW from Default or BE class? If this is correct, do i have to define fair-queue under default class to make that happen or this is by default and does not any fair-queue statement or any other additional config to be defined?
  • Is there a reason/benefit of using bandwidth percent over bandwidth remaining percent?

Thanks in advance !

Comments

  • The priority queue as you mentioned has a builtin policer. If there is no congestion the different types of traffic may use BW as they please but when there is congestion they get the amount of bandwidth that you have assigned to them. This means that critical data cannot rob BW from other classes but you should have assigned it the amount of BW needed to not drop packets.

    If you don't assign any bandwidth to the scavenger class then it will get the BW that is remaining when all other classes have had their bandwidth assigned.

  • Daniel, thanks for your response,

    Here's a quote from End to End QoS Design Cisco press pg 457 confusing me,

    "The Scavenger class constrains any traffic marked to DSCP CS1 to 1 percent of the link; this allows class-default
    to use the remaining 25 percent. However, to constrain Scavenger to 1 percent, an explicit bandwidth guarantee
    (of 25 percent) must be given to the Best-Effort class. Otherwise, if class-default is not explicitly assigned a
    minimum bandwidth guarantee, the Scavenger class still can rob it of bandwidth. This is because of the way the CBWFQ
    algorithm has been coded: If classes protected with a bandwidth statement are offered more traffic than their minimum
    bandwidth guarantee, the algorithm tries to protect such excess traffic at the direct expense of robbing bandwidth
    from class-default (if class-default is configured with fair-queue), unless class-default itself has a bandwidth
    statement (providing itself with a minimum bandwidth guarantee).

  • ispksas,

    What this is saying is:

    If you set a 1% bandwidth limit on the scavenger class, you are in effect guaranteeing 1% of the available bandwidth for the scavenger class.

    If you do not also set a bandwidth value for class-default, traffic for any class with a bandwidth guarantee can preempt class-default traffic, which has no bandwidth guarantee.

    In the example case setting bandwidth percent 25 for class-default prevents scavenger traffic from preempting class-default traffic.

    Daniel, thanks for your response,

    Here's a quote from End to End QoS Design Cisco press pg 457 confusing me,

    "The Scavenger class constrains any traffic marked to DSCP CS1 to 1 percent of the link; this allows class-default
    to use the remaining 25 percent. However, to constrain Scavenger to 1 percent, an explicit bandwidth guarantee
    (of 25 percent) must be given to the Best-Effort class. Otherwise, if class-default is not explicitly assigned a
    minimum bandwidth guarantee, the Scavenger class still can rob it of bandwidth. This is because of the way the CBWFQ
    algorithm has been coded: If classes protected with a bandwidth statement are offered more traffic than their minimum
    bandwidth guarantee, the algorithm tries to protect such excess traffic at the direct expense of robbing bandwidth
    from class-default (if class-default is configured with fair-queue), unless class-default itself has a bandwidth
    statement (providing itself with a minimum bandwidth guarantee).

     

  • What i want to have is at the time of congestion a capability for higher priority traffic (like CS3) to rob BW from Default Queue when more CS3 traffic is offered at the router even though the default queue has a min BW gauranteed configured. I don't want to have ciritcal traffic drop while default traffic enjoy its min BW. If i read this quote, it sounds like i  can do that if i configure a fair-queue statement in the dafault class. Any comments, thoughts, suggestions???

  • ispksas,

    Bandwidth is not always the best tool - policing might work better for scavenger traffic.

    The point of the example was that if you configure bandwidth for scavenger traffic, that class of traffic will be preferred over class-default if fair-queue is configured for class-default with no bandwidth configured for class-default.

  • Thanks everyone for you responses. Now let's get to my second question,

    Is there a benefit of using bandwidth percent over bandwidth remaining percent or vice versa?

    Thanks.

  • "bandwidth percent" takes a percentage of the reservable bandwidth(from the interface) while "bandwidth remaining percent" takes a percentage from the available bandwidth(reservale bandwitdh - what is taken by other classes). For further reference read the bellow post and also the Volume 1 QoS explanation on it.

    http://blog.ine.com/2008/08/17/insights-on-cbwfq/

    Good luck with your studies!

Sign In or Register to comment.