PF, ALTQ queues and keeping state
    Costin Alupului 
    costin.alupului at gmail.com
       
    Wed Dec  5 09:34:57 PST 2007
    
    
  
Hello all,
 
I have a problem and I can't seem to find a solution to it by just goggling;
so maybe you can help me.
 
I am trying to set up a traffic shaper using pf and altq with hfsc queues.
Actually I did set that up about a year ago and it worked perfectly. But
lately the number of clients increased dramatically and I had to switch to
statefull inspection because otherwise there would be just too many rules to
check for every packet that passed the ruleset.
 
Problem is: when I add "keep state" to the rules that assign traffic to the
queues, traffic goes in the default queue instead. Here is an example of
queue assignment that I tried to use (em2 is facing the clients, vlan0 is
facing the Internet):
 
pass out quick on vlan0 from $client1 to any keep state queue ul_client1
pass out quick on em2 from any to $client1 keep state queue dl_client1
pass in quick on vlan0 from any to $client1 keep state
pass in quick on em2 from $client1 to any keep state
 
Well, you can imagine that this is just a test set-up; actually the idea
would be to have just one rule for passing traffic inbound on each
interface.
 
I have read in some article that I should assign traffic when passing in on
an interface if I am to use statefull inspection and I would like to mention
that I have tried that already. I have tried even to assign traffic to
upload and download queues on the same interface (I.E.: in on em2 = upload,
out on em2 = download).
 
Finally I tried something desperate like:
 
pass out quick on vlan0 from $client1 to any keep state queue ul_client1
pass out quick on em2 from any to $client1 keep state queue dl_client1
pass in quick on vlan0 from any to $client1 keep state queue dl_client1
pass in quick on em2 from $client1 to any keep state queue ul_client1
 
Thing is, of course, that didn't work either. I always heard that one should
assign traffic to queues on the outbound rules, but I found a link somewhere
on the OpenBSD faq that stated that in fact I can assign traffic wherever I
like, given that I declare ALTQ on the right interface. But nowhere did they
say that I can't use keep state when assigning traffic to the queues.
 
All is Ok if I just loose the "keep state" from the rules, so that is the
reason why I didn't include the altq and queue declarations (those are
really ok).
 
Does anyone know what is the workaround this? Because really without
statefull inspection my machine is simply beaten; there are about 2000
queues and the traffic throughput is around 10kpps. If anyone has a better
idea I would be extremely grateful.
 
Thank you very much,
 
Costin Alupului
    
    
More information about the freebsd-questions
mailing list