A Brief History of BGP
The story of the Internet begins in the late 1960's, researchers at MIT have just succeeded in transferring data from one computer to another using a packet-switching technology, a precursor to IP as we know it. The magnitude of this feat was unfathomable, as within the next several years Government facilities all over America begin connecting and communicating with one another. By the early 1970's, technologies such as email were being introduced and the benefits of connecting to this large network became very attractive. Soon Universities worldwide join the movement, and the term "Internet" is born.
Up until the early 1980's, the Internet had been relying on a simple distance-vector routing protocol called Gateway-to-Gateway Protocol, or GGP. GGP allowed routers to exchange databases of all IP subnets local to that device. The limitations of this protocol were beginning to show, and researchers began questioning the scalability of the protocol. By 1984, GGP was replaced with EGP, or Exterior Gateway Protocol. EGP introduced the concept of "Autonomous Systems", with a unique identifier being allocated to each Intranet connecting to NSFNET, which was the backbone of the Internet at the time.
Around the same time, the TCP/IP Protocol suite was being developed, later emerging as the de-facto communication method for ARPANET. By the late 1980's, a successor to the EGP Routing Protocol was designed to make use of this new TCP transport technology. This was named Border Gateway Protocol. While still similar to the EGP distance-vector protocol, the Internet was growing at such a pace that automatic neighbor discovery was no longer feasible, so BGP now required manual neighbor specification.
Over the next few years, BGP received several minor upgrades. The NSFNET backbone was being depreciated, and entities were desperate to connect directly to one-another, and so BGP Version 2 allowed for support of multiple paths to any given network. Unfortunately the protocol was still suffering major performance issues with scaling to support the exponentially growing number of networks on the Internet. BGP Version 3 aimed to fix these issues, but the re-issuing of a new Routing Protocol standard every few years was becoming increasingly problematic, and affecting the adoption rate. BGP was rewritten from the ground up with the future support for additional code to be added as optional extensions, or "Attributes". This was BGP Version 4, and is the same version used worldwide today!
With a protocol foundation now globally adopted with the ability to mould parameters as you see fit, the industry began innovating to make the Internet what we see today. Class B IP ranges were become scarce, and many organizations were opting to advertise hundreds of Class C ranges instead. As such, the BGP Routing Table was growing extrememely large. Support for CIDR, or Classless Inter-Domain Routing, allowed BGP advertisements to summarize multiple Class C netoworks as a single entry in the Routing Table. BGP Communities allowed optional tags to be added to any route updates, allowing entities to influence how their traffic is handled by remote Autonomous Systems. Encrypted Authentication, IPv6 support and a host of other Attributes were added to the BGP specification, leading to the BGP Version 4 we know today.