Border Gateway Protocol – BGP

The BGP protocol is one used by gateways and routers based in different systems.  It’s predecessor was called EGP, this protocol actually was used on the ARPANET – the earliest seed of today’s internet.  If you’re interested in this, you can find EGP defined in Border Gateway Protocol  – RFC 1267.

Any system that runs BGP will supply and receive information from other systems running the protocol. The information as befits a routing protocol is all about networks and how to reach them.  The data exchanged will include full paths of autonomous systems and how to reach them, all BGP systems will retransmit any new network information that they receive.

An IP datagram will contain the following information that BGP will use to classify any systems detailed.

  • A Stub System has only a single connection to another system.  As such this will only carry local network traffic.
  • A multihomed system has connections to many other systems.  It won’t however carry any transit traffic.
  • A Transit system has multiple connections to many other systems.  It will allow both local and transit traffic to be distributed.

In fact this is a good way to describe the underlying infrastructure of the internet itself.  The topology consists of thousands of these systems with arbitrary connections to one another – some stubs, some multi-homed and transit systems.  All these are often described as AS (autonomous systems) connect with each other and exchange routing information using protocols like BGP or EGP for older ones.

The protocol doesn’t include a policy for routing however they can implement policy based routing set up by the administrator.  These are set up in configuration files stored on the router – these are used to make routing decisions particularly when multiple routes are available.  Unlike other routing protocols which are wildely used like RIP and OSPF – BGP uses TCP as it’s transport protocol.   It’s fairly straight forward normally but in complicated networks can add some delay, perhaps routing through a VPN or a French proxy before entering a DMZ in your Zurich based office for example.

When two BGP systems communicate they will first establish a TCP connection prior to transferring the entire BGP routing tables which exists on each router.   This exchange only happens on the initial connection (or if the router is reset) afterwards only incremental changes are transferred.

BGP is a distance vector protocol which has been known to have some problems.  These vector based protocols have been known to cause networking issues on the internet.  If you’ve ever had difficulties accessing resources across the internet that you know are up and working – perhaps getting repeated – this video is not available messages, then there is a chance that a distance vector protocol was too blame.  To be fair though BGP enumerates the route to each individual destination which is at the heart of the distance vector protocol issues.