On Wed, Dec 10, 2014 at 4:30 AM, Paco Esteban <[email protected]> wrote:
> The box has an vr(4) interface connected to a ADSL modem that provides
> roughly 14Mbps/910Kbps (down/up) thought pppoe.
> I've set up some queues on pppoe0 interface (I use $gw_if in rules).
> There are also basically 3 subnets behind this box. One for wired net,
> one for wifi net and one I called torrent net which, as you may expect,
> has a torrent box handling P2P downloads.
>
> This is my queue definition:
>
> queue q_root on $gw_if bandwidth 850K
>   queue q_dns parent q_root bandwidth 50K, min 25K
>   queue q_pri parent q_root bandwidth 200K, min 100K
>   queue q_dow parent q_root bandwidth 80K, max 210K
>   queue q_def parent q_root bandwidth 520K default
>
> And the match rules that apply:
>
> match out on $gw_if inet proto { udp, tcp } from any to <special_servers> 
> port 19302:19309 set queue(q_pri, q_pri) set prio (7,7)
> match out on $gw_if inet proto { tcp, udp } from $gw_if to { x.x.x.x, y.y.y.y 
> } port domain set queue q_dns set prio (5,5)
> match out on $gw_if inet proto tcp from any to any port { 80, 443 } set 
> queue(q_def, q_pri) set prio (3,6)
>
> match out on $gw_if from $torrent_net nat-to ($gw_if) set queue(q_dow, q_dow) 
> set prio (0,0)
>
> Basically I want google hangouts traffic to be priorized as much as
> possible, then  DNS resolutions. Torrent traffic comming from a specific
> subnet should work, but at low prio and should never exeed 210Kbps on
> the up link. In fact all traffic from this subnet is low prio (that's
> why I put the queue "tag" on the nat rule).

Per henning@/http://marc.info/?l=openbsd-misc&m=140127924031145&w=2,
"prio is ignored when bandwidth shaping is on" so this is useless
here.

> Http and https traffic goes to default queue, with ACKs to priority.
>
> Packets are correctly assigned to their respective queues. I can see
> counters go up on systat and pfctl -vvsq. All works as expected till here.
>
> The things I don't understand are:
>
> The sum of all sub-queues when I try to saturate the uplink is greater
> than the bandwidth defined for "q_root". I see values near 900Kbps or
> sometimes near 910Kbps (which is physical limit, not my manually
> defined limit).

Set a max on your root queue.

> When I saturate the link with traffic going out on "q_pri", "q_dow" and
> "q_def" the only rule that is always applied is the "max 210K" for
> "q_def". The other queues seem to share the bandwith in a "best-effort"
> manner.
>
> Maybe I'm messing things up ... I don't know.
>
> I can live without traffic shaping here. I can make the network quiet if
> I need all the uplink to make a video-call, but I really want to
> understand how this works.

Your best bet is to define your bandwidth requirements appropriately
in your queues.  If you need a specific amount of bandwidth for a
quality video call, define an appropriate minimum for the queue.

> After reading pf.conf(5) and Chapter 7 on "The Book of PF" (3rd edition)
> I thought I got it, but clearly I did not.
>
> So, any good soul could waste some time trying to explain all this ?

Reply via email to