Sunday 30 March 2008

Congestion Management and Queuing - CBWFQ

CBWFQ (Class Based Weighted Fair Queuing) - User-defined classes, each class is assigned it's own queue. Each queue can be configured with it's own (minimum) bandwith guarantee. Flexible class-maps are used to match traffic (flows) to queues.

CBWFQ can create up to 64 queues, with one for each user-defined class, each queue uses FIFO, with defined bandwidth guarantee and maximum packet limit, tail drop occurs if the maximum packet limit is reached. To avoid tail-drops WRED can be applied to specific queues.

A default-class is always present in CBWFQ which is used to queue any traffic not matching the user-defined queues. It is possible to define a minimum bandwidth guarantee for the default-class, otherwise it will use any remaining bandwidth available.

CBWFQ is not able to offer a queue suitable for applications that require low latency queuing.

Steps for configuring CBWFQ:
1. Define class-maps (match features described previously)
2. Create a policy-map, define parameters such as guaranteed bandwith/packet queue/queuing method
3. Apply policy-map to an interface in a specified direction

E.g. Guarantee minimum 120Kb/sec bandwidth for web-based applications, with a maximum queue limit of 90 packets, guarantee 20Kb/sec bandwidth for traffic from host 192.168.2.3, and fair-queue all other traffic

access-list 100 permit ip host 192.168.2.3 any
!
class-map web_application
match protocol www
!
class-map host_192.168.2.3
match access-group 100
!
policy-map enterprise_policy
class web_application
bandwith 120
queue-limit 90
class host_192.168.2.3
bandwith 20
class class-default
fair-queue
!
interface FastEthernet 0/0
service-policy output enterprise_policy

No comments: