Hi,
I have faced your problem too, so i digged myself into the issue a bit.
The core problem:
"The question is, why doesn't my qLAN_P2P queue behave in similar fashion as my qLAN_Default queue?"
I think the reason is: Because a P2P traffic usually consist of many connections, while normal HTTP or FTP only few. This makes huge difference on traffic shaping.
Freebsd uses queues, meanwhile it can only work if there is always empty space in each queue. So, when you try to prioritize your P2P traffic by assigning the lowest priority to it, what will happen? PF will drop packets from P2P queue first, as it has the lowest prio. And what will happen after this? One of your many-many P2P connections will be slowed down a bit, but nobody knows which one, and you still have a lot of others, which all tries to use your connection. That is why you feel: traffic shaper does not limit the bandwidth. It tries, but it can not.
In other words: freebsd can not shape traffic with overloaded queues if there are a lot of connections belong to it, because it simply can not know which connection uses the most bandwidth within the a queue. It simply drops packages by random from the respective queue - I guess.
You can check this by going out to shell, and type: pfctl -vsq
You see, the default queue size of freebsd is 50. This is ok for low number of connections, but for P2P it is nothing.
Solution:
You have to increase the size of your P2P queues manually in order to avoid the queue saturation.
See my post at:
http://forum.pfsense.org/index.php/topic,9427.0.html
It works for me perfectly since weeks. Now i can prioritize P2P traffic without any problem. I have queue size for P2P of 2000! (of course the latency is higher with such big queue, but for P2P this is not a problem at all)
Unfortunatelly the current webgui does not support this setting, but with 'vi' you can modify the setting in '/tmp/rules.debug' in seconds.
Then you reload the modified ruleset by 'pfctl -A -f /tmp/rules.debug'.
I think it would have reason to include queue setting into the Webgui.
Hope this helps.
Viktor