Richard Wilson([EMAIL PROTECTED]) on 2007.10.19 15:15:03 +0000: > What I want to do: > Provide 2Mb down/256Kb up ADSL-like service, contended at 20 to one. > Provide 2Mb down/2Mb up SDSL-like service, contended at 10 to one. > By contention, I mean that to take the ADSL as the example, each client > should be guaranteed 100Kbps downstream, and 13Kbps upstream, but then > fights on an equal footing with everyone else in their group for the > remainder of the 2Mb/256Kb.
As n0g0013 noted, you left out the child queues: altq on $ext_if cbq bandwidth 9.1Mb queue { adsl_up } altq on $client_if cbq bandwidth 9.1Mb queue { adsl_dn } queue adsl_up bandwidth 256Kb cbq(default) { adsl_client1_up, adsl_client2_up } queue adsl_dn bandwidth 2Mb cbq(default) { adsl_client1_dn, adsl_client2_dn } queue adsl_client1_up bandwidth 13Kb cbq (borrow) queue adsl_client1_dn bandwidth 100Kb cbq (borrow) queue adsl_client2_up bandwidth 13Kb cbq (borrow) queue adsl_client2_dn bandwidth 100Kb cbq (borrow) pass out on $ext_if from $adsl_client1 queue adsl_client1_up pass out on $client_if to $adsl_client1 queue adsl_client1_dn Now running the risk of writing crap, but i think that you then run into this problem: if you use "keep state" (which is implicit nowadays), the packets coming back in will be processed according to the queue associated with the state of that connection. i.e. a connection that was opened by a client will get the queue adsl_client1_up. This queue does nothing for your download speed, because it is not working on your $client_if, so you will instead be assigned the default speed of 2Mb on your download-link. You can solve this by either not using states _or_ by using only symetric speeds, i.e. altq on $ext_if cbq bandwidth 9.1Mb queue { dsl } altq on $client_if cbq bandwidth 9.1Mb queue { dsl } queue dsl_up bandwidth 2Mb cbq(default) { client1, client2 } queue client1 bandwidth 100Kb cbq (borrow) /Benno -- Sebastian Benoit <[EMAIL PROTECTED]>