Over his last few blog posts, Jeff Doyle has been extolling the virtues of BGP and providing design tips. While I don't portend to have Jeff's knowledge about BGP, I have always been a huge fan of the protocol. My affection for BGP has grown in the last few years as we have used it as the core routing protocol for our internal, enterprise network.
On the global enterprise networks I worked on earlier in my career, BGP was used to interconnect regional IGP autonomous systems. eBGP was used on the few large, expensive, international circuits that connected the regions. Inside the region an IGP was used for in-country routing - either OSPF or EIGRP. Sometimes there was iBGP, but there were often synchronization problems that led to routing loops. Often eBGP was just redistributed into the IGP, but that was incredibly messy. This was the after affects of hastily done network conversions. It was easier to redistribute than build a proper iBGP network inside each region that was supported by the IGP.
Over the last three years, MPLS (RFC 2547bis) has exploded into enterprise networks. While many carriers will support OSPF, RIP (gasp!), or EIGRP on links to customers, none do it enthusiastically. Some require special engineering approval. Since their MPLS backbones are based on BGP, they want enterprise customer to use BGP.
Considering what I had seen earlier in my career and the carriers' requirement to use BGP, our team set out last year to build a highly scalable and proper BGP design to support our forthcoming MPLS conversion. During a week-long engineering conference we toyed with redistribution...then we delved into iBGP with an IGP inside each region. We were held back by the belief that since OSPF, at the time, was our core routing protocol, we had to continue using it in the same fashion. However, as we worked through the design, it became clear the best path was the embrace BGP as our core routing protocol and relegate OSPF to a site routing protocol. When we made that decision, our new routing design began to flourish.
The basic tenant of our design is each site in the network - no matter the size - is its own BGP AS using private BGP AS numbers. That provides 1,024 AS numbers which is more than enough for our network (that may not be enough for very large networks, but MPLS carriers are happy to AS override for you). With each site in its own AS, the WAN links at each site - be they MPLS, private-line, or GRE tunnel - would run eBGP. Now, BGP became our core WAN routing protocol. This met the MPLS carriers' requirements and made our WAN routing much simpler. We now had a protocol with the scalability to handle thousands of routes and with enough protocol features (filter-lists, route attributes, communities, etc.) to implement routing policy (something OSPF lacks).
Next we developed what I feel is the best part of our BGP design. At each site in our network all traffic flows through the core. So, we used this rule to design BGP. The core routers (high-end Cisco 7600s) are the center of BGP at each site. These 7600s are iBGP route-reflector clusters that peer iBGP to the WAN routers. By using a route-reflector cluster we avoid the iBGP full-mesh problem. The cores create all BGP routes (via the BGP "network" command) and advertise those routes to the WAN routers. The WAN routers then advertise those routes to eBGP peers over the WAN (MPLS, other sites, etc). Filtering policy is done at the edge on the WAN routers. The cores learn routes for external sites via iBGP from the WAN routers (who already learned the routes via eBGP). Thus, the core routers know all routes in the entire network. BGP easily scales to handle these global routes, unlike OSPF which does not handle thousands of routes well. This sets up a very elegant and fast BGP design. Failover is within 5 seconds when a WAN link goes down and the design can scale quickly.
OSPF is still used, but only for local LAN routing and to allow iBGP to establish between loopback interfaces. The cores, since all packets flow through them, advertise a default route into OSPF. A packet that enters the LAN that is destined for a remote site follows the default route to the core. Since, as I mentioned, the core routers know all the routes in the network, they make the proper next-hop decision to the appropriate WAN router based on iBGP. By using a default route to bring traffic to the core routers, no routing protocol redistribution is necessary. This makes OSPF and BGP very stable.
This is the base routing design of our network. However, this simply cracks the surface of what we've done with BGP in the last 2 years. Over the next few posts, I'll dive deeper into how we've utilized BGP. If you aren't using BGP, start thinking about it. It's a great protocol and, used correctly, can add significant power to your routing design.
Michael Morris is a communications engineering manager at a $3-billion high-tech company. His background is in enterprise WANs working with telcos and developing large-scale routing designs. He has worked on networks at government and corporate organizations, including networks at two Fortune 10 companies. In his current role, he leads a team of 10 engineers responsible for large-scale IT networking projects and architectural standards for data networks, storage area networks, IP telephony, contact centers, and security. Michael is CCIE #11733 and recently became one of the first three Cisco Certified Design Experts (CCDE) ever (#20080002). He has 11 years experience in networking and communications, including four years as a paratrooper in the U.S. Army. He has a bachelor's degree in MIS from the University at Buffalo and is working on his MBA from NC State University. In 2008, he was awarded the Network Professional Association (NPA) Professional Excellence and Innovation Award for his work on network architecture, templates and enterprise MPLS design.
Michael Morris's From the Field blog is also featured on the Cisco Learning Network. See it there, along with the blogs of other Cisco Experts.