bandwidth assignement with CBWFQ

Unanswered Question
Aug 2nd, 2007
User Badges:

I'm using CBWFQ as scheduling algorithm.

I created 2 trafic class and I applied bandwidth assignement. My interface is an 10Mbit/s FastEthernet and when I apply bandwidth assignement , Cisco router write me I have only 7,5 Mbit/s as available bandwidth. Why isn't it the whole link capacity (i.e 10Mbit/s)???

So, I have assigned 1000 kilobits/s to my first class and 6500 kilobits/s to my second class. I created congestion estate and I taked measure about real bandwidth used by my two flux thanks to Wireshark. I could see that the flux belonging to my first class has 1,3 Mbits/s as speed instead of 1Mbit/s and the flux belonging to my second class has 8,5 Mbits/s as speed instead of 7.5Mbit/s

So how can we explain this difference?

  • 1
  • 2
  • 3
  • 4
  • 5
Overall Rating: 5 (3 ratings)
Djule2804 Fri, 08/03/2007 - 01:51
User Badges:

Thanks for your response cjnwodo.

Here what I could read :

The bandwidth statements assigned should never exceed 75% of the total bandwidth. The remaining 25% of the bandwidth is needed for general functions such as network traffic. It is not necessary to set up queues for network traffic as these are handled differently.

So, what I understood is that 25% of the remaining bandwidth is reserved for network traffic. And if this bandwidth is not fully used, it can be used by other classes of traffic in case of congestion.

Is it all right??

And so, what I would like to know is : how router identify traffic as belonging to network control traffic?

I simulated OSPF trafic (with DSCP=CS6), with IXIA traffic generator, and I could see that all this traffic is dropped in congestion estate.

cjnwodo Fri, 08/03/2007 - 02:04
User Badges:


Routers identify network protocols because they are always marked CS6 by the router.

However, you don't have to conform to the 75% rule if your network traffic will not be using up to 25% of the link. For example it wouldn't make sense to reserve 25% of an OC3 [oc3 = 155Mbps] for network traffic. In such cases use the command max-reserved-bandwidth to change the percentage to a higher number; [max-reserved-bandwidth 90] means your CBWFQ will use 90% and only 10% is reserved.

On the contrary you could do use max-reserved-bandwidth 100 and then setup a network class for the network traffic [with ACLs matching BGP/OSPF etc] and allocate a network bandwidth that you feel is appropriate. I personally prefer this option, as it's under my control.

cjnwodo Fri, 08/03/2007 - 02:23
User Badges:


Here is a rather simplistic QOS policy using CBWFQ



access-list 101 permit ospf any any


access-list 102 permit ip any


access-list 103 permit ip any


class-map network

match access-group 101


class-map 10NET

match access-group 102


class-map 50NET

match access-group 103


policy-map dataOUT

class 50NET

bandwidth percent 50

class 10NET

bandwidth percent 10

class network

bandwidth percent 1


interface s1/0

max-reserved-bandwidth 100

service-policy output dataOUT



If interface s1/0 were a T1 [1.544Mbps] then the default queue will have 603kbps left in it for unclassified traffic -traffic you don't wish to protect with a QOS policy.

Pavel Bykov Fri, 08/03/2007 - 02:51
User Badges:
  • Silver, 250 points or more

There are some undocumented things going on with CBWFQ. We had to come up with the solution ourselves, since the exact decision algorithm is not published by Cisco.

Here are a couple of pointers

1. Unassigned bandwidth does not go towards class-default, as you have measured (CS6 traffic dropped under congestion). It is due to a formula that CBWFQ uses.

2. Never forged the class-default. You will always have traffic there, so you should assign bandwidth reservation for the class so class-default does not starve. Whatever Cisco says - we had to reverse calculate the algorithm of CBWFQ - you can starve classes without bandwidth reservation.

As for your specific problem, do this:

interface XX

max-reserved-bandwidth 100

and then in policy map, create only one class:

1. for the big class, write rule like through access list.

2. For the second class don't write anything, just use class-default to classify traffic.


class-map important

match access-group name TESTACL

policy-map XYZ

class important

bandwidth 60

class class-default

bandwidth 40

Djule2804 Fri, 08/03/2007 - 04:04
User Badges:

Thank you very much for all your explanations very clear!!!


This Discussion