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

Reply via email to