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]>