QoS for OpenSUSE 10.3 Router (control Torrent bandwidth hording)

OpenSUSE Linux 2.6.22.19-0.4-default (AMD x64) routes all internet traffic (is a router and server) for my home network, and this works perfectly until the kids come home from college and each starts a separate 24/7 Torrent session on their individual laptop. Then other services such as VoIP start disconnecting and Web browsing become interminably slow. Torrent on multiple machines pretty much kills the network for any other applications, even on blazing fast internet connections, like mine (Gigabit wired + Comcast Internet). Since OpenSUSE is the funneling device this means OpenSUSE also needs to do the QoS throttling for the Internet connection.

My provider is Comcast Cable, and while bandwidth is typically high, it isn’t constant, so I can’t tell a QoS package that there will always be 1MB/Sec upload bandwidth, or that there will always be 30MB/Sec download available. A self detecting and adjusting QoS filter is desirable… something that can communicate with (ping?) the Comcast gateway IPv4 address every 500mS and look at response times to adjust outgoing bandwidth down, and occasionally increment back up for nearly constant connection bandwidth monitoring and maximum usable bandwidth measuring while under load.

I don’t want to tell the kids they can’t run torrent, so the question is how can QoS be setup (perhaps with cooperation from a properly configured Torrent and/or FTP client/machine) to give absolute priority to lower bandwidth applications like VoIP and HTTP traffic? i.e. I want to support the kids desired network access, and need to help them configure their systems properly, so they won’t need to babysit their machines after setting them up. Each wishes to be a good network citizen.

The kids laptops are running Windows XP and Vista and usually uTorrent or Vuse (Azureus). My kids will cooperate if there is a way, my step dad won’t, so I’ll also need a way to throttle his connection either by IPv4 or MAC address (there’s always one on every network who belives that the network’s problem, not his). I’d like to prioritize non-cooperative connections below cooperating ones to encourage cooperation.

I tried Wondershaper, which has “constant” up/down bandwidth settings for QoS. Wondershaper also flushes the queues whenever there is a configured bandwidth change. Given that Comcast doesn’t provide consistent bandwidth, are there other solutions? How about others that might work better than Wondershaper? I already tried “Google is my friend” and am now here hoping to find a real expert to help me find a good QoS solution using my cherished OpenSUSE router implementation.

OpenSUSE (DHCP configured) is running network apps [which need to be considered for QoS]; Asterisk (SIP/IAX2 VoIP), Web Server, SMTP eMail Server (for receive only), IMAPS, POPS, SSH, SFTP, Samba.

Thanks,
Craig Arno
craig (at) arno (dot) com [no SPAM please]