The most common Exterior Gateway Protocol protocol in
use on the Internet is the Border Gateway Protocol (BGP), ensuring that packets
get to their destination network regardless of current network conditions.
Like RIP,
the BGP algorithm provides great network stability, guaranteeing that if
one Internet
network line
goes
down,
BGP routers can quickly adapt to send packets through another
connection.
The
following subsections provide information on how
BGP was invented, how BGP works, the BGP algorithm,
and more
BGP information
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.
- Kirk
Lougheed of Cisco systems developed a proprietary version of BGP for Cisco router
equipment.
- Jeff Honig from Cornell
University and Dennis Ferguson from the University of Toronto developed a BGP
version
called gated 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.
BGP
uses the TCP/IP protocol on port 179 to establish
connections. It has strong security features, including the incorporation of
a digital signature in all communications between BGP routers.
Each
BGP router contains a Routing Information Base (RIB) that contains the routing
information maintained by that router. The RIB contains three types of information:
- Adj-RIBs-In. The
unedited routing information sent by neighboring routers.
- Loc-RIB. The actual
routing information the router uses, developed from Adj-RIBs-In.
- Adj-RIBs-Out. The
information the router chooses to send to neighboring routers.
BGP
routers exchange information using four types of messages:
- Open.
Used to open an initial connection with a neighboring router.
- Update. These messages
do most of the work, exchanging routing information between neighboring routers,
and contain one of the following pieces of information.
- Withdrawn routes.
The IP addresses of computers that the router no longer can route messages to.
- Paths.
A new preferred route for an IP address. This path consists of two pieces of
information -- the IP address, and the address of the next router in the path
that is used
to route messages destined for that address.
- Notification.
Used to indicate errors, such as an incorrect or unreadable message received,
and are followed by an immediate close of the connection with the neighboring
router.
- Keepalive.
Each BGP router sends a 19 byte Keepalive message to each neighboring router to
let them know that it is still operational about every 30 seconds, and
no more often than every three seconds. If any router does not receive a Keepalive
message from a neighboring router within a set amount of time, it closes its connection
with that router, and removes it from its Routing Information Base, repairing
what it perceives as damage to the network.
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:
- Update.
If the path information for an IP address in the update message is different
from the information previously received from that router, then the Adj-RIBs-In
database
is updated with the newest information.
- Decision.
If it was new information, then a decision process is run that determines which
BGP router, of all those presently recorded in the Adj-RIBs-In database,
has the best
routing path for the IP address in the update message. The algorithm is not mandated,
and BGP administrators can set local policy
criteria for
the decision process such as how long it takes to communicate with each
neighboring router, and how long each neighboring router takes to communicate
with the
next
router
in the path. If the best path chosen as a result of this decision process is
different from the one currently recorded in the Loc-RIB database, then
the database is
updated.
- 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.
One
of the other important functions performed by the BGP algorithm is to eliminate
loops from routing information. For example, a routing loop would occur when
router A thinks that router B has the best path to send messages for some computer
and B thinks the best path is through C, but C thinks
the best path is back through A. If these sort of routing
loops were allowed
to happen, then any message to that computer that passed through routers
A, B, or C would circulate among them forever, failing to deliver the message
and
using
up increasing amounts of network resources. The BGP algorithm traps and stops
any such loops.
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.
More
information. Request For Comment documentation on BGP can be found below:
- RFC
1265; Rekhter, Y.; BGP Protocol Analysis, October 1991.
- RFC
1266; Rekhter, Y.; Experience with the BGP Protocol; October 1991.
- RFC
1771; Rekhter, Y.; Li, T.; A Border Gateway Protocol 4 (BGP-4), March
1995.
- RFC
1772; Gross, P.; Rekhter, Y.; Application of the Border Gateway Protocol
in the Internet, March 1995.