Quality of Service (QoS) is a method to prioritize/penalize predefined types of traffic. QoS is a complex topic so this text will discuss only enough basic principles to help you configure an initial setup.
QoS is not the same as FreshTomato's Bandwidth Limiter.
If you need a simple, crude tool for one or more known client devices, Bandwidth Limiter may be all that you need.
QoS is a more sophisticated, more refined tool.
However, Bandwidth Limiter shares some settings with QoS. When Bandwidth Limiter is enabled, QoS should be disabled, and vice versa. If both are enabled, they conflict with each other and neither will work.
Basically, QoS performs the following:
Often these functions are mentioned when “diffserv” (differential services) is described. Diffserv is the only type of QoS FreshTomato can perform.
It's often said that QoS is a technique to mitigate lack of bandwidth when an upgrade is too costly or even impossible. More precisely, QoS also allows you to prioritize latency-sensitive traffic (such as voice) even when there's no network congestion. Thus, QoS contains controls to allow you to protect certain traffic from lack of bandwidth.
Here are some commonly used QoS terms:
This diagram should help you to understand these principles:
These are all problems that QoS can help you solve.
QoS is NOT auto-regulating. You need to manually define and tweak most QoS parameters, as needed.
As shown in the above screenshot, QoS doesn't work when CTF is enabled. This is because CTF causes network packets to be routed in hardware, outside of firmware control or monitoring.
This Network Scheduler Wikipedia entry may help you further understand the above principles:
https://en.wikipedia.org/wiki/Network_scheduler