Home
Members
itmBench
SaTS
Archive

Linux Prototype Implementation



Experiment results in [GM:sigmetrics02] and [GM:spie02] were all performed over a testbed in the Quality-of-Service Networking Lab (QNL) at Boston University.

Figure 1 shows the configuration of the testbed:

Figure 1: Lab testbed configuration

 

The testbed consists of four main parts: an instance of the traffic manager prototype running over a Linux platform, a wide-area network emulator dummynet, Active Queue Management (AQM) schemes over a FreeBSD platform, and a web traffic generation set.

ITM Prototype over Linux netfilter

The ITM prototype is built over Linux netfilter API. Linux netfilter is a framework provided by the Linux kernel for packet mangling, outside of the normal Berkeley socket interface. The architecture of the netfilter API and the relative position of the control programs in an TM implementation are illustrated in Figure 2.
linux prototype
Figure 2: Linux netfilter architecture


The arrows in Figure 2 represent directions a packet may travel through in the operating system kernel of a typical router. A packet could be destined to the local host, or be generated by the local host, or be forwarded to the next hop. Netfilter differentiates these cases and provides interfaces for control programs to hook up at different places (hooks) along these packet forward paths. There are totally 5 such places (hooks):
  • PRE-ROUTING: before an incoming packet being processed by the routing module,
  • LOCAL-IN: after an incoming packet being forwarded to the local host by the routing module,
  • FORWARD: before an incoming packet being forwarded to the output interface by the routing module,
  • LOCAL-OUT: before a locally generated packet being processed  by the routing module, and
  • POST-ROUTING: after a packet being forwarded to the output interface by the routing module.
For our purpose of size-aware classification, we need to maintain a counter for each flow to pick up flows that transfer more than thresh_ amount of packets. This is done by inserting a piece of code at the POST-ROUTING hook, as illustrated in Figure 2.

To install our implementation of the size-aware classification at the ITM prototype, following this step-by-step instruction.