Congestion management and queues.


So im studying about congestion management, namely the use of queuing and the different discplines of queuing.

FIFO = First In First Out. This is a straight forward queue which doesnt take any priority, delay or bandwidth into account. This is the default on Cisco equipment for interfaces > 2.048 Mbps (E1 lines or slower).

RR = A simple Round Robin method of queuing. Makes a certain amount of queues, and uses round robin among them. This basically shares the bandwidth among all queues, noone gets preferential treatment.

WRR = Weighted Round Robin. Similar to the standard round robin method, but each queue has a weight on it, which specifies how much to get from each queue before moving on to the next. CQ (Custom Queuing) is a derrivitative of this.

PQ = Priority Queueing. In this model there are 4 different queues (priority), which is High, Medium, Normal and Low. As long as there are packets in the high priority queue none of the other queues gets checked and processed. When there are no packets in the High queue, the Medium queue is checked, if it has a packet, it gets processed, and then the High queue is checked again. This can lead to starvation of the lower level queues, but does give priority to the High queue.

Weighted Fair Queuing = Weighted Fair Queuing is a bit different from other methods. It splits up the data into flows, with each distinct flow getting its own queue. This flow is determined by looking at IP/TCP/UDP headers, and creating a hash. This hash is then the key to which queue to get into. (I will explain more on this later as I review the rest of the material). This is the standard method on slow interfaces <2.048Mbps (E1 line).

CBWFQ = Class Based Weighted Fair Queuing. This is one of the newer models of queuing. It basically makes you use the MQC to define classes from your traffic. These classes gets added to a policy-map and can get bandwidth guarantee. There is still no way to support delay sensitive traffic.

LLQ = Low Latency Queuing. Pretty much the same as CBWFQ, but with the addition of a priority queue. This priority queue gets priority over all others, but it is policed, so it doesnt starve the other queues. It is defined with classes, just as CBWFQ, but in the policy map you specify the “priority” command, to make it a priority queue.

Theres alot to this whole discussion, and I will update this post as I digg deeper into them all.