Depends on what you want to accomplish. What sort of level of control you want.
Linux has ability to do everything from simple home nat-style routers all the way up to industrial strength previously-only-realy-expensive-networking capabilities such as large LAN active routing (like the expensive Cisco-style routers) and even internet routing capabilities.
here is one example of a way of attack. Using Squid proxy to give priority to web traffic over file sharing type stuff, and other ways to limit bandwidth like using linux traffic shaping thru CBQ.
here is the advanced linux networking and routing howto, check out the cookbook section it has some examples of limiting bandwidth for different purposes.
I am sure also that nicer linux router targeted distros will provide easy-to-use frontends for manipulating these various tools and such.