[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ack and priq



Hi,
Yes, ack prioritizing again ;-)
For days now i am trying to grasp the concept of priq queueing and searched
the net, manpages and archives and to my understanding i did everything as
described.. but the ultimate goal to prioritize empty TCP ACKs doesn't
seem to work for me. I've seen a lot of these questions in the archives
regarding this issue but none of the given solutions seems to work for
me. Oh well, hate to ask but here it goes.
Only the relevant parts here, below are the full logs.
Cable connection 2048/128, so no PPPoE overhead. OpenBSD 3.4.
if_ext = "de0"
if_int = "rl0"    (192.168.0.1)
if_wir = "wi0"    (10.0.0.1)
altq on $if_ext priq bandwidth 128Kb queue { q_pri, q_def }
queue q_pri priority 7
queue q_def priority 1 priq(default)
nat on $if_ext from $if_int:network to any -> ($if_ext)
nat on $if_ext from $if_wir:network to any -> ($if_ext)
pass out on $if_ext inet proto tcp from ($if_ext) \
              to any flags S/SA keep state queue (q_def, q_pri)
pass out on $if_ext inet proto { udp icmp } from ($if_ext) \
              to any keep state
----
#pfctl -gsr
@44 pass out on de0 inet proto tcp from (de0) to any flags S/SA keep \
state queue(q_def, q_pri)
  [ Skip steps: i=48 d=48 f=61 sp=end da=50 dp=47 ]
  [ queue: qname=q_def qid=3 pqname=q_pri pqid=2 ]
---
#pfctl -gvsq
queue q_pri priority 7
  [ pkts:      11446  bytes:  618408  dropped pkts:  0 bytes:      0 ]
  [ qlength:   2/ 50 ]
  [ qid=2 ifname=de0 ifbandwidth=128Kb ]
queue q_def priq( default ) 
  [ pkts:      65035  bytes:14471431  dropped pkts: 31 bytes:  34911 ]
  [ qlength:   3/ 50 ]
  [ qid=3 ifname=de0 ifbandwidth=128Kb ]
To my understanding the queueing mechanism seems to work. When
the connection gets saturated packets are dropped when the queue
length of 50 is reached but it doesn't seem to have any affect for
the ack prioritizing. What's going on here ?
To spice it up a *bit* see rrdtool example at
http://members.home.nl/r.winder/graph.gif  and as you can see
incoming data is brought to a standstill when connection gets
saturated.
What I did so far:
*  Toggled bandwidth between 100Kb >< 128Kb
*  Enabled priq queueing on $if_int and $if_ext simultaneously
*  Tried numerous pf.conf samples obtained from the most obscure
   corners on the net where priq was supposed to work... it did not.
All to no avail. Am I expecting to much from this priq scheduling ? I
hope it isn't something obvious.
If you didn't fell asleep right now, below are the links to logs and
pf.conf file. When more logs are needed just let me know.
http://members.home.nl/r.winder/pf.conf.priq
http://members.home.nl/r.winder/gsr
   /Robert