why sp’s don’t need bgp in their core, and why it is needed on the edge…
from luc de Ghein:
When the IP network of a service provider must forward traffic, each router must look up the
destination IP address of the packet. If the packets are sent to destinations that are external to the
service provider network, those external IP prefixes must be present in the routing table of each
router. BGP carries external prefixes, such as the customer prefixes or the Internet prefixes. This
means that all routers in the service provider network must run BGP.
MPLS, however, enables the forwarding of packets based on a label lookup rather than a lookup
of the IP addresses. MPLS enables a label to be associated with an egress router rather than with
the destination IP address of the packet. The label is the information attached to the packet that
tells every intermediate router to which egress edge router it must be forwarded. The core routers
no longer need to have the information to forward the packets based on the destination IP address.
Thus, the core routers in the service provider network no longer need to run BGP.
The router at the edge of the MPLS network still needs to look at the destination IP address of the
packet and hence still needs to run BGP. Each BGP prefix on the ingress MPLS routers has a BGP
next-hop IP address associated with it. This BGP next-hop IP address is an IP address of an egress MPLS router. The label that is associated with an IP packet is the label that is associated with this BGP next-hop IP address. Because every core router forwards a packet based on the attached MPLS label that is associated with the BGP next-hop IP address, each BGP next-hop IP address of an egress MPLS router must be known to all core routers. Any interior gateway routing
protocol, such as OSPF or ISIS, can accomplish this task.