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>

Reply via email to