BGP was originally intended to run along the borders of an AS, with the routers in the middle of the AS
ignore of the details of BGP hence the name Border Gateway Protocol. A transit AS is an AS that
routes traffic from an external AS to another external AS. Typically, transit ASes are ISPs. All routers in
a transit AS must have complete knowledge of external routes. One way to achieve this goal is to
redistribute BGP routes into an IGP at the edge routers; however, this approach introduced many
problems.
In 1994 the size of the Internet routing table was only about 4 to 8MB, so BGP could be redistributed
into the local IGP, eg: EIGRP and OSPF. The edge routers running BGP would hold the full Internet
routing table; and the routers in the middle that are running only the IGP, would not incur the overhead
of running BGP but would still know about all the external routes.
As the current Internet routing table is very large, redistributing all the BGP routes into an IGP is not a
scalable way for the interior routers within an AS to learn about the external networks. Running fullmesh IBGP within the AS is a viable alternative.
The BGP split-horizon rule governs the route advertisements between IBGP peers, which specifies
that routes learn via IBGP are never propagated to other IBGP peers.
Note: The BGP split-horizon rule is slightly different that the split-horizon rule as in the distance vector
routing protocols.
Note: Regular split-horizon rule still govern the route advertisements between EBGP peers, in which
a route is not advertised back to the EBGP peer from which the route was received.
TCP sessions cannot be multicast or broadcast because TCP has to ensure reliable delivery of
packets to each recipient. Since TCP cannot use broadcasting, BGP cannot use it either; therefore
BGP has to setup fully-meshed TCP sessions among the IBGP neighbors.