Here's the simple configuration I'm using at home. We have two queues -- my son's workstation gets 50% of the network if there is contention. Everything/everybody else gets the other 50% when there is contention.
The ISP is serving 25Mb/5Mb with 20MB/10MB bursts on a 100BaseT interface.
In this asymmetrical configuration, I use the same queue names for outbound traffic to the ISP and outbound to the local network, so that the same state uses the appropriate bandwidth in contention, regardless of which direction created the state.
Only my son's pass rules have a queue name assigned. All other pass/block rules use the default "std" queue.
Code:
#bursts for ISPs 20MB down 10MB up:
queue up on $external_nic bandwidth 5M burst 100M for 800ms
queue son parent up bandwidth 2500K
queue std parent up bandwidth 2500K default
queue down on $internal_nic bandwidth 25M burst 100M for 1600ms
queue son parent down bandwidth 12500K
queue std parent down bandwidth 12500K default