What are the primary differences between OSPF and BGP, and in what scenarios would you recommend one over the other?