Traffic shaping for your users isn't a bad idea, but you're going about it in the wrong way - specifically, you're insisting on trying to shape inbound traffic. This quote comes from the Linux Advanced Routing and Traffic Control HOWTO
With queueing we determine the way in which data is SENT. It is
important to realise that we can only shape data that we transmit.
With the way the Internet works, we have no direct control of what
people send us. It's a bit like your (physical!) mailbox at home.
There is no way you can influence the world to modify the amount of
mail they send you, short of contacting everybody.
[...]
If you have a router and wish to prevent certain hosts within your
network from downloading too fast, you need to do your shaping on the
inner interface of your router, the one that sends data to your own computers.
As voretaq7 and MikeyB have said in their comments on Hopeless Noob's answer, you have decided to accomplish underlying task X by method Y, and you're asking us all about method Y. Sadly, method Y is the wrong way to accomplish task X. This is leading to unproductive answers and general frustration.
There are usually reasons why things are the way they are, and in free software, those methods are rarely related to marketing or other irrelevancies; they are often (though by no means always) related to facts and reality. So, sit down and read about the methods provided to achieve what you're trying to achieve, and then work out how to use those methods to solve your particular problem.
Edit: trickle isn't working with the network stack at all; it gets involved far earlier than that by intercepting calls to glibc
's networking code for dynmically-linked binaries that use TCP as a transport mechanism.
That doesn't prove that traffic-shaping can be used on inbound traffic, it proves there are other approaches to limiting network throughput than working directly with the kernel's network stack. You could also do what you want with an authenticating proxy, eg squid
which can do per-user bandwidth quotas.
Let me be clear: I'm not saying that what you want is impossible. I'm saying I don't believe you can or should do it with inbound traffic-shaping.
Both squid and trickle actually make voretaq7/MikeyB's point: that if you had asked how to achieve what you actually want done, you would have got much better answers.