Weighted random early detect
One of the queuing schemes getting some attention these days is called WRED. Unlike others, its job is not to manage congestion, but to avoid it before it happens. The problem it solves is called 'tail drop,' which happens when a burst of packets fills up a switch or router's buffer and the last few packets in the burst get dropped because there's no more room in the buffer.
This is bad because you have no way of controlling which packets get dropped. Ideally, you'd like your high priority packets to be saved and your low priority packets to be dropped. But because the buffer is full, you can't even receive the packets to identify which ones are which.
So WRED watches the queues and when they start to fill up, it begins to drop packets. Dropping a packet or two doesn't save much space, but if it drops a TCP packet, TCP will throttle back its transmission rate, which helps to keep things nice and smooth.
If you configure WRED, understand that it makes decisions about which packet to drop based on IP Precedence. It doesn't check the protocol (i.e. TCP vs UDP). Since most VoIP installations make their VoIP traffic, which is typically UDP, a higher priority, WRED is more likely to drop the lower-priority TCP traffic instead. This is good.
However, if you have a substantial amount of other UDP traffic, you should increase its priority as well, so that your UDP traffic won't get dropped. If your UDP packets are discarded, not only will you lose the packets (which must be retransmitted by the application, if they get retransmitted at all), but dropping UDP packets doesn't help WRED avoid the congestion either, since UDP doesn't use the "slow start" flow control mechanism like TCP does.
Thomas Alexander Lancaster IV is a consultant and author with over ten years experience in the networking industry, focused on Internet infrastructure.