The following is from the kernel help in 2.4. There are patches to add diff-serv to the 2.2 kernel. Its a rather interesting project and will do what you want. I'm not familiar with the other options. Most of this is available in 2.2 and it would not be a bad idea to test out with 2.2 since its been available long and the documentation should be better
----------------------------------------------------------------
x CONFIG_NET_SCHED: x
x x
x When the kernel has several packets to send out over a network x
x device, it has to decide which ones to send first, which ones to x
x delay, and which ones to drop. This is the job of the packet x
x scheduler, and several different algorithms for how to do this x
x "fairly" have been proposed. x
x x
x If you say N here, you will get the standard packet scheduler, which x
x is a FIFO (first come, first served). If you say Y here, you will be x
x able to choose from among several alternative algorithms which can x
x then be attached to different network devices. This is useful for x
x example if some of your network devices are real time devices that x
x need a certain minimum data flow rate, or if you need to limit the x
x maximum data flow rate for traffic which matches specified criteria. x
x This code is considered to be experimental. x
x x
x To administer these schedulers, you'll need the user-level utilities x
x from the package iproute2+tc at
ftp://ftp.inr.ac.ru/ip-routing/ . x
x That package also contains some documentation; for more, check out x
x
http://snafu.freedom.org/linux2.2/iproute-notes.html . x
x x
x This Quality of Service (QoS) support will enable you to use x
x Differentiated Services (diffserv) and Resource Reservation Protocol x
x (RSVP) on your Linux router if you also say Y to "QoS support", x
x "Packet classifier API" and to some classifiers below. Documentation x
x and software is at
http://icawww1.epfl.ch/linux-diffserv/ . x
x x
x If you say Y here and to "/proc file system" below, you will be able x
x to read status information about packet schedulers from the file x
x /proc/net/psched. x
x x
x The available schedulers are listed in the following questions; you x
x can say Y to as many as you like. If unsure, say N now. x
x