A linux router can do this kind of thing, but can be trick to set up. Check out
http://lartc.org/howto/ and
http://lartc.org/wondershaper/ . A properly configured linux router can shape traffic quite well. any old pentium or 486 will do, with 16 MB ram. Please note, this is NOT trivial to set up. You're going to have to learn a bit to make it work.