For details on obtaining the and building the source code see the downloads page.
The QJump module has several parameters:
verbose
(int) – varies how verbose the module output is (in the range 0-4).bytesq
(int) – sets the number of bytes per network epoch. This is the P parameter from the QJump equations.timeq
(int) – sets the time (in microseconds) per network epoch.pXrate
(int) – sets the the f value for QJump level X
. The value is set as an integer multiple of the base rate given by bytesq
divided by timeq
. For example, setting p2rate
to 5 indicates that the third-highest priority level (p2) will receive 5x the number of bytes per epoch the highest-priority level (p0).autoclass
(bool) – turns on the autoclassifier , which degrades an application until it reaches the right QJump level for its throughput requirements.$ 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] -------------------------------
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
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