On Saturday 13 October 2007 00:17:32 Ovi wrote: > Hello guys > > I have this example from OpenBSD: > > altq on $br1_if cbq bandwidth 20Mb qlimit 100 tbrsize 1000 queue { std1, > customer_1 } queue customer_1 bandwidth 1Mb cbq(red,ecn) { customer_1_bulk, > customer_1_ack } queue customer_1_ack priority 7 > queue customer_1_bulk priority 0 > > I want to use CBQ on FreeBSD, with similar rules still I have the > following problem: > On a 20Mb internet line I have 100 users. I want to limit (cap) > bandwidth per user at 1 Mb and to add queues for all 100 users. > The problem is that on FreeBSD this rules are not working, instead I > must use this: > > altq on $br1_if cbq bandwidth 20Mb qlimit 100 tbrsize 1000 queue { std1, > customer_1 } queue customer_1 bandwidth 1Mb cbq(red,ecn) { customer_1_bulk, > customer_1_ack } queue customer_1_ack bandwidth 800Kb priority 7 > queue customer_1_bulk bandwidth 128Kb priority 0 > > > This "bandwidth" option does not help me because I must not exceed 1 Mb.
This can't be done with cbq, because in cbq the sum of child queues must match the interface bandwidth or less. Use hfsc for this. Also, you reserve 80% for ack and 20% for bulk, you might wanna reverse that. > So my question is: how I do bandwidthupper limit with CBQ per user, like > no more than 1 Mb, and add rules for 100 users? See above. A good resource on HFSC: http://www.probsd.net/pf/index.php/HFSC It would look something like this: # Use interface bandwidth, so your interface doesn't get limited altq on $br1_if bandwidth 100Mb hfsc(upperlimit 100Mb) queue { \ NO_CUSTOMER, \ CUSTOMERS } # Any traffic not assigned to a customer comes on the NO_CUSTOMER queue. # Backlogged traffic consumes a maximum of 80Mbit # There's always 55Mbit available. # Realtime values may not exceed 75% of root queue queue NO_CUSTOMER bandwidth 80Mb hfsc(realtime 55Mb default) # Create a customers root queue, setting hard limits for any customers # It ensures the entire internet connection is available at all times # and also limits it to that ammount queue CUSTOMERS bandwidth 20Mb hfsc(realtime 20Mb upperlimit 20Mb) { \ customer_1, \ customer_2, \ ..., \ } # Assign 1% per customer (100 customers) for backlogged traffic. # No realtime guarantees, let hfsc figure out how to spend the 20Mbit # from the CUSTOMERS parent queue. # No customer gets more then 1Mbit even if he's alone surfing the net. queue customer_1 bandwidth 1% hfsc(linkshare 1% upperlimit 1Mb) \ { customer_1_bulk, customer_1_ack } # default priority is 1 queue customer_1_bulk bandwidth 80% hfsc queue customer_1_ack bandwidth 20% priority 2 hfsc -- Mel _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"