The Internet was birthed in the late 1900's, comprising of a heterogeneous(diverse) set of technologies. Naturally, this is perhaps the most complex system the world has ever known and a key requirement of its success is the quality of service that it provides. This post explores two approaches that are used to enable such quality of service, namely Integrated Services (IntServ) and Differentiated Services (DiffServ).

Integrated Services - IntServ

The IntServ specification was authored by Bob Braden, David Clark and Scott Shenker[1]. The core aim of IntServ is to enable a quality of service that is tailored to multimedia applications, such as voice, video and real-time communication; it uses a protocol called RSVP to capacitate this. Finally, it is a flow-based and stateful quality of service model which runs over IP (Internet Protocol), the underlying concepts will now be explored.

RSVP - Resource Reservation Protocol

The basic idea behind RSVP (in relation to Qos) is to enable routers to request resources from other routers unidirectionally (in one direction). To make this clear, consider the diagram below:

 _________                        _________
|         | "Reserve bandwidth"  |         |
|    R1   |=====================>|    R2   |
|_________|                      |_________|

As denoted here, R1 (R = Router) is using RSVP to request bandwidth from R2 in order to ensure that when data is sent across to R2, R1 can ensure that R2 will be able to handle such data with a certain quality of service (such as no jitters in a video/audio streaming application).

Some of the major issues in using IntServ are that each router in a network needs to be IntServ compatible, this is not scalable due to the computation needed which is expensive to deploy on such a large scale. In addition, the overhead caused by simple browsing tasks (which consist of a relatively minute number of packets) may be using disproportionate force to address a small scale requirement.

Differentiated Services - DiffServ

Differentiated Services is a stateless approach to quality of service. Its name indicates how it works; by differentiating packets at the network edge (which will be defined at a later stage) based on a specified forwarding behaviour (DSCP code)[3].

How packets are differentiated

A network edge is responsible for assigning a DSCP code to the DS field in packets throughout the network. This offloads computation to network edges and allows the core routers in the network to provide a quality of service to packets based simply on this DSCP code. Anecdotally, imagine a parent with five children who are going to school in the morning, with one who has not completed their python progamming homework. The parent wants this child to be admonished for their behaviour so the parent places a sticker on the child (it will make sense soon) so that the programming teacher will know that they need to be treated different to their sibilings who have not only completed their programming homework, but have also started learning JavaScript. The parent therefore gives stickers to the four other children for the teacher to know this and once they arrive at school the teacher rewards those who completed their work and the child who did not. This was possible because the teacher could react to the children based on their labelled type. The way pckets are treated is formally called PHB (Per-Hop behaviour).

This basic anecdote explains the foundation of DiffServ. Its key advantage is related to scalability (it does not require routers the computation that IntServ requires).

There is far more to cover, such as the intricacies of RSVP and more detail about DiffServ.

Here are some references:

  • [1] https://tools.ietf.org/html/rfc2205
  • [2] https://www.cl.cam.ac.uk/~jac22/books/mm/book/node44.html
  • [3] http://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus1000/sw/4_0/qos/configuration/guide/nexus1000v_qos/qos_6dscp_val.pdf