Obtaining and building QJump TC Module

For details on obtaining the and building the source code see the downloads page.

Installing and Configuring the QJump TC Module

The QJump module has several parameters:

You can install can configure the QJump module as follows:

$ sudo insmod sch_qjump.ko verbose=4 timeq=100 bytesq=256

Depending on the verbosity setting, the QJump module will output its status to the system log in different levels of detail. This can be accessed using dmesg, e.g.:

$ dmesg
[ 2379.582475] sch_qjump: module license 'BSD' taints kernel
[ 2379.582479] Disabling lock debugging due to kernel taint
[ 2379.583112] QJump[4]: Init module
[ 2379.583126] QJump[4]: Calculating CPU speed 0
[ 2380.583698] QJump[4]: CPU is running at 2799405818 cyles per second
[ 2380.583701] QJump[4]: Calculating CPU speed 1
[ 2381.584274] QJump[4]: CPU is running at 2799407672 cyles per second
[ 2381.584277] QJump[4]: Calculating CPU speed 2
[ 2382.584850] QJump[4]: CPU is running at 2799407705 cyles per second
[ 2382.584853] QJump: Module parameteres:
[ 2382.584853] -------------------------------
[ 2382.584854] QJump: timeq=100us
[ 2382.584854] QJump: bytesq=100B
[ 2382.584855] QJump: p7rate=10000
[ 2382.584856] QJump: p6rate=0
[ 2382.584856] QJump: p5rate=0
[ 2382.584856] QJump: p4rate=1000
[ 2382.584857] QJump: p3rate=100
[ 2382.584857] QJump: p2rate=10
[ 2382.584858] QJump: p1rate=5
[ 2382.584858] QJump: p0rate=1
[ 2382.584859] -------------------------------

Configuring 802.1Q Support

QJump requires the switch ports to be configured in trunk-mode and the 802.1Q kernel module to be installed and working. To install it:

$ sudo modprobe 8021q

To add and configure an 802.1q interface on VLAN-ID 2, for eth0, we run the following:

$ port="eth0"
$ vlanid="2"
$ vconfig add $port $vlanid

By default, the module maps all priorities onto the default VLAN priority. We need change this to a one-to-one mapping as follows:

$ port="eth0"
$ vlanid="2"
$ vconfig set_egress_map $port.$vlanid 0 0
$ vconfig set_egress_map $port.$vlanid 1 1
$ vconfig set_egress_map $port.$vlanid 2 2
$ vconfig set_egress_map $port.$vlanid 3 3
$ vconfig set_egress_map $port.$vlanid 4 4
$ vconfig set_egress_map $port.$vlanid 5 5
$ vconfig set_egress_map $port.$vlanid 6 6
$ vconfig set_egress_map $port.$vlanid 7 7
$ vconfig set_ingress_map $port.$vlanid 0 0
$ vconfig set_ingress_map $port.$vlanid 1 1
$ vconfig set_ingress_map $port.$vlanid 2 2
$ vconfig set_ingress_map $port.$vlanid 3 3
$ vconfig set_ingress_map $port.$vlanid 4 4
$ vconfig set_ingress_map $port.$vlanid 5 5
$ vconfig set_ingress_map $port.$vlanid 6 6
$ vconfig set_ingress_map $port.$vlanid 7 7

$ cat /proc/net/vlan/$port.$vlanid

Configuring TC

QJump uses the Linux Traffic Control (TC) interface. Once the kerne module is installed, it can be configured to run on a specific interface using the TC tools. For example:

$ sudo tc qdisc add dev eth0 root qjump

Removing the TC module can be done as follows:

$ sudo tc qdisc del dev eth0 root qjump