There is an extensive and nicely written HOWTO on this topic but here I'm talking about some really easy to use bandwidth shaping tools -- wondershaper and trickle.
Wondershaper
This is the easiest tool I have found to limit bandwidth of a particular interface. All it takes is,
the {down} and {up} are bandwidth in kilobits. So for example if you want to limit the bandwidth of interface eth1 to 256kbps uplink and 128kbps downlink,
$ sudo wondershaper {interface} {down} {up}
To clear the limit,
$ sudo wondershaper eth1 256 128
Easy, eh?
$ sudo wondershaper clear eth1
Trickle
Unlike wondershaper, which limits the bandwidth to an entire interface, trickle is user-space bandwidth limiting tool. The syntax is,
Both {up} and {down} and bandwidth in KB/s. Now if you invoke it as,
$ trickle -u {up} -d {down} {program}
It will fire up Firefox, limiting the bandwidth to 8KB/s. This is very useful specially if you are a web developer and want to test your application under various bandwidth conditions.
$ trickle -u 8 -d 8 firefox
Furthermore, you can also run trickle as daemon (trickled) which can limit the bandwidth to several programs.