Border Gateway Protocol
Border Gateway Protocol
How BGP was invented. BGP was initially created in three different
implementations. Then, in a standard Internet approach, they were used
together to show that separate implementations of the protocol could
interoperate without problems.
Jeff Honig from Cornell University and Dennis Ferguson from the
University of Toronto developed a BGP version calledgated to run on
Unix computers, enabling Unix machines to become BGP routers, and
then put the code in the public domain for others to use.
Yakov Rekhter from the IBM Thomas J. Watson Research Center wrote
a BGP version for the NSFNET backbone.
How BGP works. When a BGP router first comes up on the Internet, either
for the first time or after being turned off, it establishes connections with the
other BGP routers with which it directly communicates. The first thing it does
is download the entire routing table of each neighboring router. After that it
only exchanges much shorter update messages with other routers.
BGP routers send and receive update messages to indicate a change in the
preferred path to reach a computer with a given IP address. If the router
decides to update its own routing tables because this new path is better,
then it will subsequently propagate this information to all of the other
neighboring BGP routers to which it is connected, and they will in turn decide
whether to update their own tables and propagate the information further.
Routing messages are the highest precedence traffic on the Internet, and
each BGP router gives them first priority over all other traffic. This makes
sense -- if routing information can't make it through, then nothing else will.
The BGP algorithm. The BGP algorithm is run after a BGP router receives
an update message from a neighboring router, and consists of the following
three steps performed for each IP address sent from the neighbor:
Propagation. If the decision process found a better path, then the Adj-
RIBs-Out database is updated as well, and the router sends out update
messages to all of its neighboring BGP routers to tell them about the
better path. Each neighboring router then runs their own BGP
algorithm in turn, decides whether or not to update their routing
databases, and then propagates any new and improved paths to
neighboring routers in turn.
The BGP protocol has been periodically revised, and is now at version 4.
Each version can support all earlier versions. Different BGP routers may run
different versions of BGP, so the protocol includes the following clever
method for ensuring that different versions can communicate. When one
BGP router tries to communicate for the first time with a second BGP router,
it sends it an Open message including the highest version of BGP that it
supports. If the second router cannot support that version, it sends back a
Notification message with the highest version that it can support. The first
router then opens a connection using that lower version, so that the two
routers can then communicate at the highest version of BGP they both
support.