The congestion control algorithm(s) of TCP seem to distribute the available bandwidth fairly between individual TCP flows.
Is there some way to enable (or more precisely, enforce) fair bandwidth sharing on a per-host instead of a per-flow basis on a router? There should not be an (easy) way for a user to gain a disproportional bandwidth share by using multiple concurrent TCP flows (the way some download managers and most P2P clients do).
I'm currently running a DD-WRT router to share a residential DSL line, and currently it's possible to (inadvertently or maliciously) hog most of the bandwidth by using multiple concurrent connections, which affecty VoIP conversations badly. I've played with the QoS settings a bit, but I'm not sure how to enable fair bandwidth sharing on a per-IP basis (per-service is not an option, as most of the flows are HTTP).
Update: I'm assuming TCP or TCP-like congestion control behavior of all flows, as otherwise there would really be no way of controlling inbound traffic.
Currently, congestion control is per-flow, and a single user with multiple flows will cause each user's flows to throttle back, and they will eventually stabilize at 1/n times the total bandwidth for n flows.
Now isn't it possible to modify the inbound queue and packet dropping algorithm in such a way that there is an inbound "packet counter" per user, and packets are dropped per user instead of randomly? That way, if only some users are actually causing the congestion, only their flows will have to throttle back, instead of everybody's flows.