Monday, 6 February 2012

QoS Queuing Methods

Queuing in Cisco routers has been around for quite some time. Back then the command's were not standardised and using some of the older methods requires that you memorise some really arcane commands. The new Modular Quality of service (MQC) makes life much easier. This is also sometimes referred to as Class Based Queuing.


FIFO - First in First Out
  • the most simplest
  • to configure
    • Just unconfigure all other methods
  • use "show int x/y | i que" to check method
  • change que length: hold-queue x out
PQ - Priority Queuing
  • not MQC enabled
  • good for low latency requirements
  • 4 queues - High, Medium, Normal, Low
  • always serve the high first, if empty then medium and so on
  • to configure
    • 1) create a priority list: (config)# priority-list x ....
    • 2) apply to interface: (config-if)# priority-group x

CQ - Custom Queuing
  • not MQC enabled
  • good for reserving bandwidth. There are some corner cases where this does not work. (See ODOM)
  • 16 queues - labelled 1 to 16
  • set to bytes to transmit per queue
  • service all queues in round robin fashion
  • this guarantees minimum bandwidth per queue
  • to configure
    • 1) create que list: (config)# queue-list x que y (where x is list number and y is que number)
    • 2) apply to interface: (config-if)# custom-que-list x
 MDRR - Modified Deficit Round Robin
  •  8 queues - labelled 0 -7
  • exactly like CQ but provides better bandwidth control
  • only available on GSRs (ie 12000 routers)
WFQ - Weighted Fair Queuing
  • default option
  • good for low volume flows
  • not MQC enabled
  • 4096 queues (unconfigurable)
  • based on classifying flows automatically
  • provides all flows with equal bandwidth
  • uses modified tail drop
  • to configure:
    • 1) no need to create anything
    • 2) apply to interface: (config-if)# fair-queue
CBWFQ - Class Based Weighted Fair Queuing
  • MQC enabled
  • 64 queues - each one is reference with a class statement in MQC speak
  • does not have the bandwidth issues like CQ
  • like CQ in that you can reserve bandwidth but in % not in bytes
  • only within the default queue you can use WFQ but all the rest use FIFO
  • the default queue can use tail drop or WRED. All other queues use tail drop. If you end up using WFQ then you will use modified tail drop.
  • to configure
    • create policy
      • (config)# class-map match-all x
      • (config)# policy-map xxx 
          • class x
            • bw percent 50 (% of the number configured on the interface using the bw command)
          • class default
            • fair-que
    • apply to interface: (config-if)# service-policy out xxxx
LLQ - Low Latency Queuing
  • MQC enabled
  • this is just CBWFQ with the priority command turn on in one class
  • to configure
    • create policy
      • (config)# class-map match-all x
      • (config)# policy-map xxx 
          • class x
            • priority bw (maximum bandwidth in kbps)
            • or priority percent 50 (% of the interface BW or based on the interfaces bw command)
          • class default
            • fair-que
    • apply to interface: (config-if)# service-policy out xxxx

Further details about bandwidth vs priority command can be found here.

No comments:

Post a Comment