Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 22 Oct 2005 11:52:05 -0400
From:      Bruno Afonso <brunomiguel@dequim.ist.utl.pt>
To:        Bill Marquette <bill.marquette@gmail.com>
Cc:        freebsd-pf@freebsd.org
Subject:   Re: FreeBSD + MPD + PF + ALTQ
Message-ID:  <435A6025.5060602@dequim.ist.utl.pt>
In-Reply-To: <55e8a96c0510220651t47fa063ayefd1dcffd63950a6@mail.gmail.com>
References:  <000b01c5d644$54527f20$0132a8c0@delta>	<4359ED5B.7010303@dequim.ist.utl.pt> <55e8a96c0510220651t47fa063ayefd1dcffd63950a6@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Bill Marquette wrote:
> On 10/22/05, Bruno Afonso <brunomiguel@dequim.ist.utl.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.

BA
-- 
Bruno Afonso, Biological Engineer
Dana-Farber Cancer Institute
1 Jimmy Fund Way
Smith Building
Boston, MA 02115
phone: (617)-632-5105
GABBA Graduate Student (http://gabba.up.pt)
Homepage @ http://brunoafonso.net/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?435A6025.5060602>