In response to Lrac's question about how QoS works...
First a few relevant definitions from here and info provided by wikipedia:
Packet Delay or Latency: is the difference in time between when the signal is transmitted, and when it is received. Delay is typically broken down into two components, a fixed delay and a variable delay.
Packet Jitter: measures the variation in arrival rates between individual packets.
Packet Loss: is a measure of the number of packets from the original data stream that do not find their way to the destination.
Quality of Service, QoS is a subset of traffic/packet shaping that addresses Packet Jitter and the variable latency delay. Early approaches reserved fixed amounts of bandwidth for certain applications. Modern QoS enabled routers/layer 3 switches can prioritize their queues based on DSCP markings - a 6 bit designation in the IP header that tells the traffic type. They could just as easily base this on source or destination IP addresses. Similar layer 2 schemes can be used based on MAC addresses or VLANs. There are different scheduling algorithms and implementations, but the simple bottom line is that your time sensitive IP traffic can be prioritized. VoIP calls won't have the delay, and big downloads should still go about as fast.
I haven't gotten to programming QoS in IOS on Cisco systems. My friend said that the QoS configuration on his home router was straightforward. You simply give devices a priority. If it's anything like ACLs (access control lists) on routers, the device keeps track of all the MAC and IP addresses of devices that have connected to it. You would simply open the HTML based web configuration page and click on devices to prioritize - the Xbox and VoIP phone in my friends case. I'll post a mini review when I pick up my own QoS "gaming" home router.
More on packet shaping to follow.