Down in Hobart we've gone with BGP accross our entire network. We initally tried OSPF about 2 years ago now but it caused major headaches with regards to running stable. Quite a few times we had the ospf daemons silently die but I think that was mostly due to multicast issues.
At the moment we have around 9 or 10 AS on our network a map can be seen
here We've been lucky in that our network has grown as a single entity with no disconnected segments. Our assignment of AS is fairly ad-hoc and no where near optiomal due to learning BGP while setting it up but that's what it's all about in our books, experimentation.
From a keeping the shit running point of view BGP makes much more sence. Within a region or whatever you can run ospf/rip/eigrp (if you're made of money
etc but to get back into the main network you need to talk BGP and redistribute your IGP into the EGP. It just so happens that our entire network uses an EGP well iBGP
Config is fairly simple
router bgp 64512
redistribute connected
neighbor 192.168.4.9 remote-as 64516
neighbor 192.168.4.9 soft-reconfiguration inbound
neighbor 192.168.4.22 remote-as 64512
neighbor 192.168.4.22 next-hop-self
neighbor 192.168.4.22 soft-reconfiguration inbound
we set next-hop-self on iBGP sessions because we use /30 point to point links. This came about due to the network starting off as an ad-hoc card to card arangement we could move to adding subnets to aps and assigning like that but it's never happend.
no need to set next-hop-self on eBGP links as that happens automaticly when you cross an AS.
we don't run BGP on every node we only install it on a non endpoint node. ie the site generally has an uplink and an omni and for end users that don't have a second interface we add a static route and redistribute static.
Quite a few of our routers these days are Linksys WRT54G's i think we've gone from 0 to 9 of these units in around 2 months. we use quagga on these units to do all of our routing and interface configuration the only IP that is hard coded into the unit is the LAN interface ip in NVRAM other than that they all come from zebra.conf or via bgp.