On 10/22/05, Bruno Afonso <brunomiguel_(_at_)_dequim_(_dot_)_ist_(_dot_)_utl_(_dot_)_pt> wrote:
Bill Marquette wrote:
> On 10/22/05, Bruno Afonso <brunomiguel_(_at_)_dequim_(_dot_)_ist_(_dot_)_utl_(_dot_)_pt> wrote:
>> The download part is the problematic one IF they're not all connected
>> to
>> the same network interface. Why ? Because altq only works PER
>> interface
>> and tun0, tun1, tun2, etc are each and single one, one interface on
>> its own.
>>
>> You basically have to
>>
>> altq on tun0
>>
>> altq on tun1, etc..
>>
>> What we would need in this case would be a meta-interface that altq
>> would work on, but that is not available. Bottom line: you can't
>> control
>> with PF global bw over an interface-span. This is probably necessary
>> for
>> a full commercial deployment. Don't know of any plans to implement
>> this...
>>
>> meta_if <meta_1> {tun0, tun1}
>>
>> altq on meta_1 ...
>>
>> would be nice. :-)
>
> You mean something like:
> altq on { fxp0 fxp1 } bandwidth 100Mb hfsc queue { a b }
> queue a bandwidth 50Mb hfsc(default)
> queue b bandwidth 50Mb hfsc
> This works today :)
Yes, I have now tried and verified that it works, but not as we would
like to in the sense of a meta interface, eg:
altq on { tun0 tun1 tun2 } cbq bandwidth 1Mb queue { a b }
queue a bandwidth 700Kb cbq(default)
queue b bandwidth 300Kb
which turns itself into... (from pfctl -sq)
queue root_tun0 bandwidth 1Mb priority 0 cbq( wrr root ) {a, b}
queue a bandwidth 700Kb cbq( default )
queue b bandwidth 300Kb
queue root_tun1 bandwidth 1Mb priority 0 cbq( wrr root ) {a, b}
queue a bandwidth 700Kb cbq( default )
queue b bandwidth 300Kb
queue root_tun2 bandwidth 1Mb priority 0 cbq( wrr root ) {a, b}
queue a bandwidth 700Kb cbq( default )
queue b bandwidth 300Kb
What would I want with this? To create a queue that is shared by every
interface, so limiting globally every interface to a maximum of 1Mb each
and all of them to 1Mb each too, in a cqb borrowing shared way. For
examply, I'd like a to never exceed 700Kb taking into account every
interface. This makes perfect sense if I have a limited ammount of bw to
share among each client, which, in a real world, happens 99,9% of the
time because resources are limited.
So, the syntax works, but it does achieve what I mentioned before, the
meta interface concept. The example you give is only useful for
simplifying rulesets, although it's more difficult for humans to
understand.
From what I understand, that binds queue 'a' to every interface. The
queue definition still limits the queue itself to 700Kb, but allows
you to assign traffic to that queue on each interface that queue is
bound to. I can't find the email that I read that suggests it now
(machine having recently been wiped and google not being terribly
forthcoming with the answer).
Have you verified this not working with real traffic, or just the
pfctl -sq output? At this time I don't have a multi-interface box at
my disposal, so I can't easily test this.
--Bill
_______________________________________________
freebsd-pf_(_at_)_freebsd_(_dot_)_org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-pf
To unsubscribe, send any mail to "freebsd-pf-unsubscribe_(_at_)_freebsd_(_dot_)_org"