I try to verify the bandwidth of my Internet access by using iperf.
Here's what I've done in PF:

# A queueing rule to count the packets
altq on $internet_if cbq bandwidth 4Mb \
queue { queue_default, \
queue_iperf }

queue queue_default bandwidth 80% cbq(default borrow)
queue queue_iperf bandwidth 20% cbq(borrow)

# A redirection to access the iperf server
rdr on $internet_if proto udp \
to $nat_ip port 44 \
-> $server_iperf port 44

# Two rules to allow the traffic
# The first one puts the packets into the queue
pass in quick on $internet_if inet proto udp \
to $nat_ip port 44 \
queue queue_iperf

pass out quick on $dmz_if inet proto udp \
to $server_iperf port 44

Then, I watch the state of the queues with "pfctl -s queue -vv".
When I send a set of packets with iperf, the queue statistics only
show the first packet.
I thought this was due to the fact that the "pass" rule is used once only
and I tried to add "no state" on it but it has no effect.
I don't understand why I don't see all the packets in the queue manager.

Thanks for your help.


Note : OS = Open BSD 4.1