neighbor command must be reachable without
using an IGP, which can be accomplished by pointing at an
address that is reachable through a directly connected network
or by using static routes to that IP address.
Content
6.2 EBGP and IBGP 6.2.3
Establishing a Connection Between Internal BGP Neighbors
When BGP runs between routers within the same autonomous
system, it is called IBGP. IBGP exchanges BGP information so
that all BGP speakers have the same BGP routing information
about outside autonomous systems. Routers running IBGP do not
have to be directly connected to each other as long as they can
reach each other so that TCP handshaking can be performed to
set up the BGP neighbor relationships. The IBGP neighbor can be
reached by a directly connected network, static routes, or by
the internal routing protocol. Because multiple paths generally
exist within an autonomous system to reach the other IBGP
routers, a loopback address is usually used in the BGP
neighbor command to establish the IBGP sessions. For
example, when multiple routers in an autonomous system are
running BGP, they exchange BGP routing updates with one
another. In Figure , routers A, C, and D learn the paths to the
external autonomous systems from their respective EBGP
neighbors (routers Z, Y, and X). If the link between routers D
and Y goes down, router D must learn new routes to the external
autonomous systems. Other BGP routers within AS 65500 that were
using router D to get to external networks must also be
informed that the path through router D is not available. Those
BGP routers within AS 65500 need to have the alternate paths
through routers A and C in their BGP forwarding database. You
must set up IBGP sessions between all BGP routers in AS 65500
so that each router within the autonomous system learns about
paths to the external networks via IBGP.
Content
6.2 EBGP and IBGP 6.2.4
Synchronization Within an Autonomous System BGP was
originally intended to run along the borders of an autonomous
system with the routers in the middle of the autonomous system
ignorant of the details of BGP (hence the name Border Gateway
Protocol). A transit autonomous system, such as the one in
Figure , is an autonomous system that routes traffic from one
external autonomous system to another external autonomous
system. Typically, transit autonomous systems are ISPs. All
routers in a transit autonomous system must have complete
knowledge of external routes. Theoretically, one way to achieve
this goal is to redistribute BGP routes into an IGP at the edge
routers. However, there are problems associated with this
approach. Since the current Internet routing table is very
large, redistributing all the BGP routes into an IGP is not a
scalable method for the interior routers within an autonomous
system to learn about the external networks. Another method
that you can use is to run IBGP within the autonomous system.
By definition, the default behavior of BGP requires that it
must be synchronized with the IGP before BGP may advertise
transit routes to external autonomous systems. The BGP
synchronization rule states that a BGP router should not
advertise to external neighbors destinations, learned from IBGP
neighbors, unless those destinations are also known via an IGP.
If a router knows about these destinations via an IGP, it
assumes that the route has already been propagated inside the
autonomous system, and internal reachability is ensured.
Content 6.2 EBGP and IBGP 6.2.5
IBGP in a Nontransit Autonomous System A nontransit
autonomous system, such as an organization that is multihoming
with two ISPs, does not pass routes between the ISPs. However,
the BGP routers within the autonomous system still require
knowledge of all BGP routes passed to the autonomous system to
make proper routing decisions. BGP does not work in the same
manner as IGPs. Because the designers of BGP could not
guarantee that an autonomous system would run BGP on all
routers, a method had to be developed to ensure that IBGP
speakers could pass updates to one another while ensuring that
no routing loops would exist. To avoid routing loops within an
autonomous system, BGP specifies that routes learned through
IBGP are never propagated to other IBGP peers. The
neighbor command enables BGP updates between BGP
speakers. By default, each BGP speaker is assumed to have a
neighbor statement for all other IBGP speakers in the
autonomous system, which is known as full mesh IBGP. Routers do
not have to be directly connected to be fully meshed. If the
sending IBGP neighbor is not fully meshed with each IBGP
router, the routers that are not peering with this router have
different IP routing tables from the routers that are peering
with it. The inconsistent routing tables can cause routing
loops or routing black holes, because the default assumption by
all routers running BGP within an autonomous system is that
each BGP router is exchanging IBGP information directly with
all other BGP routers in the autonomous system. If all IBGP
neighbors are fully meshed, when a change is received from an
external autonomous system, the BGP router for the local
autonomous system is responsible for informing all other IBGP
neighbors of the change. IBGP neighbors that receive this
update do not send it to any other IBGP neighbor, because they
assume that the sending IBGP neighbor is fully meshed with all
other IBGP speakers and has sent each IBGP neighbor the
update. Example: IBGP Partial Mesh
Figure displays
the IBGP update behavior in a partially meshed neighbor
environment. Router B receives a BGP update from router A.
Router B has two IBGP neighbors, routers C and D, but does not
have an IBGP neighbor relationship with router E. Routers C and
D learn about networks that are added or withdrawn behind
router B. Even if routers C and D have IBGP neighbor sessions
with router E, they assume that the autonomous system is fully
meshed for IBGP and do not replicate the update and send it to
router E. Sending an IBGP update to router E is the
responsibility of router B, because it is the router with
first-hand knowledge of the networks in and beyond AS 65101.
Router E does not learn of any networks through router B and
does not use router B to reach any networks in AS 65101 or
other autonomous systems behind AS 65101.
Example:
IBGP Full Mesh
Figure displays a fully meshed IBGP.
When router B receives an update from router A, it updates all
three of its IBGP peers: routers C, D, and E. The IGP routes
the TCP segment containing the BGP update from router A to
router E because the routers are not directly connected. The
update is sent once to each neighbor and not duplicated by any
other IBGP neighbor, which reduces unnecessary traffic. In
fully meshed IBGP, each router assumes that every other
internal router has a neighbor statement that points to each
IBGP neighbor.
TCP and Full Mesh
TCP was
selected as the transport layer for BGP because it can move
large volumes of data reliably. With the very large Internet
routing table constantly changing, TCP was determined to be the
best solution for windowing and reliability, as opposed to
developing a BGP one-for-one windowing capability like OSPF or
EIGRP. Because each IBGP router needs to send routes to all the
other IBGP neighbors in the same autonomous system (so that
they all have a complete picture of the routes sent to the
autonomous system), they must use fully meshed BGP (TCP)
sessions. Remember, BGP uses TCP to ensure the reliable
delivery of packets, therefore, they cannot broadcast or
multicast their routes to other IBGP neighbors. When all
routers running BGP in an autonomous system are fully meshed
and have the same database as a result of a consistent routing
policy, they can apply the same path selection formula. The
path selection results are therefore uniform across the
autonomous system, which ensures no routing loops and a
consistent policy for exiting and entering the autonomous
system.
Content 6.2 EBGP and IBGP