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

  • 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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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