I have implemented a number of network throughout the years (shut up Neil :-) starting with Gated on NetBSD then OpenBSD and then switched gated to zebra.
Current personal 'state of the art' is OpenBSD 3.0 with zebra 0.92a - waiting for the new stuff in the zebra CVS tree to hit a new release.
:-) I was going to suggest the same thing, a few things to bear in mind with this approach: It needs significant maintenance in a high bandwidth / large network setup, i.e. its fine for driving a couple of E1 or T1's and maybe a couple of FE's but beyond that it turns into a management nightmare. Tweaking kernel compile parameters in the middle of the night because you've ran out of sometype of buffer isn't my idea of fun. If you are strapped for cash then I highly recommend it but thats about the only situation I'd recommend it in, you can also gain a number of flexibilities in that you can hack the source code and do alsorts of other interesting stuff. Regards Neil.