I typically use dummynet in FreeBSD (picoBSD, really) on a floppy or bootable USB token (or in a Virtual Machine) to do this. But you can also do it with iptables in Linux, some configurable switches, and specialty devices like this one or other WAN/LAN emulators.
You can configure a Linux bridge with
ebtables
to mark the packets andtc
to shape the traffic.Also some Cisco switches can do bandwidth limiting. See Cisco:Comparing Traffic Policing and Traffic Shaping for Bandwidth Limiting
Untangle can do this via the paid bandwidth control app.
I typically use dummynet in FreeBSD (picoBSD, really) on a floppy or bootable USB token (or in a Virtual Machine) to do this. But you can also do it with iptables in Linux, some configurable switches, and specialty devices like this one or other WAN/LAN emulators.
Another solution - m0n0wall, designed to test latency in applications which work over network.