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

altq ACK prioritization prevents initiation of new connections

i was testing the TCP ACK prioritization by following the explanation on
your website (using OpenBSD 3.5-release). the problem is that whenever i
try to initiate a new connection during a file transfer, a few packets
belonging to the new connection end up in the default queue, so they have
to wait there until the file download is finished and the priority queue
is empty again.
i think i found the bandwidth value for which the queues start to fill (the
queue length is about 20/50). lower bandwidths give comparable or higher
queue lengths, whereas for higher bandwidths the queues hardly fill at
all. in the latter case, the download rate still drops considerably when
i upload a file simultaneously (like 4 Mbps -> 600 kbps) using scp.
in the first case (low bandwidth) the rate seems to be improved, but i
have to initiate the connections first, before down/uploading, because
the initiation is delayed during file transfers (filling the priority queue
with ACKs). so basically the problem is: how can i still initiate new
connections _during_ a file transfer?
i've used pfctl -Fs to flush the states, broken all connections in
between ruleset reloading and used pfctl -vvsq to monitor the queues. 
am i missing something very obvious here?
i am using the following basic pf.conf:
set loginterface $ext_if
scrub in all
altq on $ext_if priq bandwidth 100Kb queue { q_pri, q_def }
queue q_pri priority 7
queue q_def priority 1 priq(default)
pass out on $ext_if inet proto tcp from $ext_if to any flags S/SA \
        keep state queue (q_def, q_pri)
pass in  on $ext_if inet proto tcp from any to $ext_if flags S/SA \
        keep state queue (q_def, q_pri)