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

next in thread | previous in thread | raw e-mail | index | archive | help
On 10/22/05, Bruno Afonso <brunomiguel@dequim.ist.utl.pt> wrote:
> 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 interfac=
e
> >> and tun0, tun1, tun2, etc are each and single one, one interface on it=
s 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 contr=
ol
> >> with PF global bw over an interface-span. This is probably necessary f=
or
> >> a full commercial deployment. Don't know of any plans to implement thi=
s...
> >>
> >> 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 understa=
nd.


>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



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