Today’s networks support applications that deliver text, audio, images and video, often in real time and with a high degree of interactivity, using a common infrastructure. More often than not, traffic is carried over packet-switched networks that treat all data the same, under what is known as best-effort service. Packet switching can achieve very high efficiency through statistical multiplexing of data from numerous sources; however, due to the very nature of packet switching, one should expect fluctuations in throughput, delay, reliability, etc., for any given flow. The greater the statistical multiplexing capabilities, the greater the efficiency and also the greater the variability of achieved performance; in this sense, best-effort service provides maximum efficiency with highly unpredictable service quality. Clearly, not all traffic flows are created equal. Interactive web-based applications tend to be very sensitive to throughput, while real-time voice and video are sensitive to delay and jitter, and traditional data applications such as e-mail and file transfers are fairly insensitive to fluctuations in performance. The concept of quality of service (QoS) has evolved from the realization that in networks that carry heterogeneous traffic it makes sense to treat specific classes of traffic according to their specific needs.