hi everyone, Thank you for your replies. i realised that i did not explain my issue clearly.
what i want to achieve is, say we have a parent queue of 10M. when 5 users connect, they should all receive 2M bandwidth each. when 5 more users connect, i want to bog down their bandwidth to 1M each. when the connected users drop down to 8, i want to give them 1.25M each. i do not have a certain number of users. the number constantly changes. the config set of pf does not change until you load pf.conf again so adding and removing queues dynamically seems not possible to me. i was wondering if some mechanism is in place or can be constructed aiding pf in order to distribute available bandwidth equally. i hope this version is clearer. regards. On 04 Feb 2016, at 14:37, Marko CupaÄ <marko.cu...@mimar.rs<mailto:marko.cu...@mimar.rs>> wrote: On Thu, 4 Feb 2016 12:45:23 +0100 "Peter N. M. Hansteen" <pe...@bsdly.net<mailto:pe...@bsdly.net>> wrote: On 02/04/16 12:19, Marko CupaÄ wrote: If you need something more advanced, like granting minimum bandwidth with the ability to borrow from other queues up to maximum bandwidth when other queues are empty, I am afraid you won't be able to do it with current queueing system. However, I'm still hoping one of these days someone will prove me wrong. I'm a little curious about what you're basing this assertion on? As in, can you point us to benchmarks or other tests that indicate that hfsc queueing (which is the algorithm underlying the post-5.5 traffic shaping) with variable allocations does not work? Child queues with variable allocations (min and bandwith not equal to max or burst) can never exceed the parent queue's allocation, but using the min, max and burst parameters as documented in the queueing section of pf.conf(5) should indeed influence observed results /when one or more queues approach a threshold that triggers shaping/. If you can come up with measurements that show the mechanism is defective, I'm sure a bug report would be appreciated. Let's say I have the following setup: ---cut-here--- queue download on $int_if bandwidth 10M min 10M max 10M queue host1 parent download bandwidth 5M min 5M max 10M queue host2 parent download bandwidth 5M min 5M max 10M default match out on $int_if to $host1 set queue host1 match out on $int_if to $host2 set queue host2 pass out on $int_if ---cut-here--- I guess it should be obvious what I want to achieve: If both hosts request max bandwidth at the same time, throttle them both to 5M. While host2 sits idle, give host1 10M. If host2 requests max bandwidth while host1 downloads at 10M, throttle host1 to 5M and give host2 5M. Would getting the different outcome (such as not throttling active host1's active transfer from 10M to 5M, and grant host2 5M when it requests max bandwidth) count as proof for defective mechanism? Regards, -- Before enlightenment - chop wood, draw water. After enlightenment - chop wood, draw water. Marko CupaÄ https://www.mimar.rs/ Tarkan Açan sodiumcc BeyoÄlu â İstanbul Tel: 0212 293 2002 Fax:0212 293 2001 www.sodium.com.tr<http://www.sodium.com.tr>