[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Is bandwidth parameter wrong in current OpenBSD's ALTQ/HFSC?



Monday, February 16, 2004, 3:54:59 PM, you wrote:

> Alexey E. Suslikov wrote:
>> in the first answer, Henning said:
>> >>   original altq hfsc class' implementation have no "bandwidth"
>> >>   parameter, but "pshare" ("linkshare" in current implementation)
>> >>   and "grate" ("realtime").
>> >>
>> >>   so, if someone knows, which purpose of the hfsc class' "bandwidth"
>> >>   parameter in current implementation?
>> >
>> > pfctl_altq.c, in eval_pfqueue_hfsc():
>> >
>> >       /* if link_share is not specified, use bandwidth */
>> >         if (opts->>lssc_m2 == 0)
>> >                 opts->>lssc_m2 = pa->bandwidth;
>> 
>> but if we assume the following declaration:
>> 
>> #allocate guaranteed 32Kb and do not try to borrow
>> queue Q1 bandwidth 32Kb hfsc (realtime 32Kb, linkshare 0%)  
>> 
>> linkshare==0% - we don't want to assing shared bandwidth to this
>> queue. but the code shown above tells what if linkshare==0 altq
>> will use bandwidth value as linkshare's m2 value.
>> 
>> but this is not the same! even worst: we can't assing zero value
>> to bandwidth parameter. this is equivalent to "have no ability
>> to define non-borrowable queues": the minimum value for linkshare
>> (or bandwidth) is 1%.

> you can do the following:
>         queue Q1 bandwidth 0% hfsc (realtime 32Kb, linkshare 0%)

this is non-working:

bandwidth for Q1 invalid (0 / 0)
./pf.conf:xx: errors in queue definition

> but the following might be close to what you are trying to achieve:
>         queue Q1 hfsc (linkshare 10Kb, upperlimit 32Kb)

sorry, but why not linkshare 0%? i don't want to share bandwidth
available, just hard limit the queue!

but in case of linkshare 0% i have got

pfctl: link-sharing sc exceeds parent's sc
./test:xx: errors in queue definition

against

altq on fxp0 bandwidth 256Kb hfsc queue \
{Q1,Q2,Q3,Q4,Q5,Q0}
queue Q1 hfsc (upperlimit 32Kb linkshare 0%)
queue Q2 hfsc (upperlimit 32Kb linkshare 0%)
queue Q3 hfsc (upperlimit 32Kb linkshare 0%)
queue Q4 hfsc (upperlimit 32Kb linkshare 0%)
queue Q5 hfsc (upperlimit 32Kb linkshare 0%)
queue Q0 hfsc (upperlimit 32Kb linkshare 0% default)

> the original hfsc from cmu didn't have these features as hfsc was
> designed to be work-conserving.
> altq extends hfsc and makes it non-work conserving when
> zero-linksharing or upperlimits are specified.

>> so the question is: "who needs two broken config parameters to
>> control one variable"?

> hfsc has 2 distinct bandwidth parameters; one for the realtime
> scheduling and the other for the linksharing scheduling.
> so, the bandwidth parameter is redundant but the current
> implementation is less surprising for those who don't understand
> hfsc.
> (I agree that it's confusing for those who knows hfsc, though.)

not only confusing, it just don't want to work as expected :/
as for me bandwidth is bogus with hfsc...