WRR is a network scheduling module for Linux written by Christian Worm Mortensen. It has the ability to shape an internet connection without buying some expensive QoS solution from the ISP. It can even run on the firewall; thus making more efficient use of the firewall machine.
WRR will work on 2.4 kernels from 2.4.17 and newer and on most (if not all) 2.6 kernels until 2.6.28. If you need similar traffic shaping for 2.6.29 or later, consider using DRR (Deficit Round Robin) which has similar (but not identical) functionality. I have not yet myself switched to DRR so I will not (currently) provide any guidelines.
To use WRR, you need:
This release is for 2.6.27 (tested). It will not work for older kernels. If you need support for older kernels, please use an older release below. It contains no new features but contains a one-line fix for an API change in 2.6.27. Please do not try 2.6.28 unless you are brave as it seems to have compatibility issues.
This release is for 2.6.26 (tested) and 2.6.25 (untested). It will not work for older kernels nor will it work for 2.6.27 (no support currently). It contains no new features but fixes compatibility with netlink changes in the kernel introduced in 2.6.25. Big thanks to Rune Kock for the patch.
This release is for 2.6.24 and 2.6.23 (tested) but might work for 2.6.22 (untested). It has no new features; this release fixes masq support for 2.6.23. If you need a patch for 2.6.22 I recommend the 070717 release below. The patch does not work for 2.6.25 or above.
This release is for 2.6.22 and later only. It has no new features; this release just fixes masq support for 2.6.22 (and possibly 2.6.21 - I haven't tested this). It works on 2.6.23 too.
This release is for 2.6 only. For 2.4 patches, you'll want the 021019 release (see below). News in this release:
This is the older release by Christian Worm Mortensen, the original author of WRR. The patches below are my ports of his original work and has no new features or significant changes, except compatibility with newer kernels.
Updated 021019 patch for 2.4. This includes a new module description and in-kernel support.
021019 patch ported to 2.6. Pick the most recent one avaliable for you kernel version.
Important: Prior to the 220.127.116.11 patch WRR did not compile on at least powerpc. This should be fixed now. Also it contains an important fix for at least arm, s390 and powerpc. If you use any of these architectures, please use the 18.104.22.168 patch or newer.
iproute 20041019 includes some changes that are incompatible with the WRR patch in the latest release. I have adapted the patch to the 20041019 release of iproute. The patch should work for the 051007 and 060110 releases of iproute2 though I have not tested this. The last Worm release (021019) is also provided here.
For documentation I recommend that you download and read all of the documentation package, originally written by Christian Worm Mortensen: WRR 060804.
If you run Debian you might be interested in my WRR-enabled iproute package. This package, iproute-wrr, is identical to the official iproute package from the Debian archive except it has the QNET patchset applied. Available for download or as APT source here.
The original WRR project was developed and maintained by Christian Worm Mortensen. As he left the prject it disappeared from sourceforge. You can get the original distribution files for WRR and WIPL here, but the web pages are lost (you could try to bug Christian Worm Mortensen to see if he has them). Note that these packages haven't been updated since 2002, so the patches are mostly useless on current kernels, however the documentation should be fine.