Quality of Service Part 8: Congestion Management

In part 8 of this series we are going to unravel the mysteries of congestion management and its four main queuing methods.

Congestion is the result of many factors and can occur in many places on the network. A few of the reasons for congestion are traffic aggregation points, network transit points, speed mismatches, oversubscription, and insufficient packet buffers. Aggressive traffic can fill interface queues and starve more time sensitive flows such as voice and video. Increasing bandwidth is not an adequate fix to solve these issues. By using queuing algorithms to sort traffic and determine a method of prioritizing traffic, the routers can solve specific network traffic issues which in turn can increase network performance.

There are two hardware components; hardware and software. Hardware queuing always uses FIFO queueing, and software queueing is used if the hardware queue is full. A full hardware queue indicates interface congestion and a software queue is used to manage that congestion.

To control congestion, the device using the congestion management tools must determine the buffer queues the packets are to be queued in and what order in which packets are sent out an interface based on the priority assigned to those packets. Congestion management tools must perform these tasks to function as suggested.

  • Create Queues
  • Assign packets to queues based on the packet classification
  • Schedule the packets for transmission

There are four types of queuing mechanisms in the congestion management feature set. Each mechanism is fully customizable to specify different number of queues and the order in which the traffic is serviced. Only one queueing mechanism type is allowed to be configured on each interface.

In times of no congestion, packets are sent out the interface as soon as they arrive. During times of congestion when packets are arriving faster than the interface can send them, the congestion management tools queue the packets in buffers based on their classification and are scheduled based on the algorithm of that particular queuing method. The router determines the order of packet transmission by controlling which packets are placed in which queue and how queues are serviced with respect to each other.

Following are the four types of queueing, which constitute the congestion management QoS features. The queueing types are listed here and will be fully discussed in the next few entries of this blog series.

  • FIFO (first-in, first-out) entails no concept of priority or classes of traffic. With FIFO, transmission of packets out the interface occurs in the order the packets arrive.
  • Custom queueing (CQ) allocates bandwidth proportionally for each different class of traffic. CQ allows for the specification of the number of bytes or packets to be drawn from the queue. This is especially useful on slow interfaces.
  • Priority queueing (PQ) sends packets belonging to one priority class of traffic before all lower priority traffic to ensure timely delivery of those packets.
  • Weighted fair queueing (WFQ) offers dynamic, fair queueing that divides bandwidth across queues of traffic based on weights. WFQ ensures that all traffic is treated fairly, given its weight.

To understand how WFQ works, consider the queue for a series of File Transfer Protocol (FTP) packets as a queue for the collective and the queue for discrete interactive traffic packets as a queue for the individual. Given the weight of the queues, WFQ ensures that for all FTP packets sent as a collective an equal number of individual interactive traffic packets are sent.

Given this handling, WFQ ensures satisfactory response time to critical applications, such as interactive, transaction-based applications that are intolerant of performance degradation.

There are four types of WFQ:

  • Flow-based WFQ (WFQ)
  • Distributed WFQ (DWFQ)
  • Class-based WFQ (CBWFQ)
  • Distributed class-based WFQ (DCBWFQ)

For serial interfaces at E1 (2.048 Mbps) and below, flow-based WFQ is used by default. When no other queueing strategies are configured, all other interfaces use FIFO by default.

Author: Paul Stryer

References

In this article

Join the Conversation