We're somewhat of a fan of the pfSense project. While it has moved at a pretty slow pace, it is a very interesting project. We use the software in both production and lab environments because it's so darn easy to make changes to. Recently the project has eeked further towards a 2.0 release. As it progressed we've tried some very good development builds, and others that tended to really suck the life, literally, out of us because there were ugly bugs introduced. Take heart, this is a normal thing in software development.
"Oops, let me revert that change, sorry that code didn't belong there! That's fixed, try tomorrow's snapshot!"
Anyway, we've found it getting much more stable. It brings a very useful outbound load balancing/failover functionality to it. It brings a differently tuned traffic shaper. The traffic shaping is ultra important to us in the lab as we sit there and pummel a WAN connection with a couple of DVD's worth of downloads, some netflix and try to make a call to make sure if any traffic is dropped, it's not on the voice side of things. Sometimes that's hard to pull off, but we manage it somehow! :-)
While we feel the traffic shaping still takes a couple of extra steps to get functioning during a deployment or test, we've managed (again) to find all of the places in the original scripts where we can define sipXecs and an ITSP provider so we shape both on the WAN and LAN interfaces and predefine the ports to take the mystery out of it. Stay tuned to see when we officially release the modified templates so the average joeadmin can use it against his sipfoundry deployment!
If you are already running pfSense 2.0 and use sipXecs and are having a hard time with shaping for voip (specifically sipXecs), let us know and see if we can help!