Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a OpenBSD server acting as a router/firewall with yhr packet filter ruleset shown below, a linux server, and a linux client.

When transferring files (using netcat) by TCP, the limits are applied (for example the 100mbit limit in the example), though when transferring data by UDP, the limits aren't applied; the file always takes the same amount of time no matter the queue bandwidth limit I set (I can even turn off the queues completely, and will still get the same result).

Why aren't the queuing rules applied to UDP packages?

The rules used:

#queue rules
altq on { $int_if, $ext_if } cbq bandwidth 100Mb queue { def, low }
queue def bandwidth 0Mb cbq(default)
queue low bandwidth 100Mb cbq

#Passrules test

pass out quick from $int_if to $ext_if queue low
pass in quick from $ext_if to $int_if queue low
pass out quick from $ext_if to $int_if queue low
pass in quick from $int_if to $ext_if queue low

I suppose this may be related a question I've previously asked, though since it's more of a separate question, I suppose a separate question should be used for this

share|improve this question
Have you tried specifying proto udp on your passrules? – Eric H May 10 '10 at 1:36
I've tried specifying "proto { udp, tcp }", though it didn't do any difference. Will try to run separate them separately (i.e. try with only tcp enabled, then only udp enabled) and see what happens. – user42511 May 10 '10 at 11:22

Please post the output of pfctl -vsq and pfctl -vsr so we can see that the rules are matching properly.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.