In today’s modern networks, subscribers of certain services (e.g. VoIP and/or video) demand that their services are always available and also have an acceptable quality.
In order to ensure that availability and quality, it is first necessary to group traffic into classes where traffic in a single class requires the same treatment, and then to ensure that treatment is delivered consistently to all traffic in that group. This consistency is required not just in a single device but in all devices that the traffic crosses from source to destination.
Quality of Service (QoS) is the manipulation of aggregates of traffic such that each is forwarded in a fashion that is consistent with the required behaviors of the applications generating that traffic.
From an individual user’s point of view, QoS is experienced on the end-to‐end (usually round trip) flow of traffic. However, it is implemented as a set of behaviors at each hop – this is an important distinction that is absolutely fundamental to QoS, and it is critical that the reader understands it clearly.
In effect, this means that a single hop with no configured QoS can destroy the end-to-end experience and nothing that subsequent nodes do can recover the end-to-end quality of experience for the user. That doesn’t mean that QoS must be configured at every hop. However, it’s critical to understand that a single congested hop can be the undoing of the most intricate QoS design.
On the other hand, Class-of-Service (CoS) is a configuration construct used within the JUNOS operating system to configure an individual node to implement certain behaviors at that node, such that the end-to-end QoS is consistent with the desired end-to-end user experience or application behavior.
Each class is associated with an aggregate of traffic that requires the same behaviors as it flows through the network device. Classes do not relate implicitly to traffic belonging to a single application; rather, any application requiring the same behaviors generates traffic belonging to the same class.