If we have 3 routers, A, B ,C
A has an IBGP peering to C, B is just running ospf so each BGP speaker can learn its neighbours.
I hear that if a packet comes into A, it still has to go via B, when it hits B it will get dropped.
Why is this? as the next hop for the packet would be C, its ibgp neighbour?
Does is not just route it to the next hop in the bgp table which would be C? or would the next hop show as B?
The only default BGP loop prevention mechanism is the AS-path, being an AS-path distance vector protocol at its origin; when you get an BGP update and see your own AS in the AS path, you drop it. Now, with IBGP updates, as updates would travel within the same AS, there is no AS being added in the updates, so there would be impossible for BGP to detect loops, thus, by default, in order to prevent loops, if B sends an IBGP update to A, A cannot send it further to any other IBGP neighbors, unless A is a route-reflector. So the route-reflector allows you to reflect IBGP updates (get an IBGP update from X and reflect it, send it further to Y via IBGP as well), and because it open the chance for loops, it adds two more attribute to the reflected routes, which are used not only in best-path selection, but more importantly in loop prevention; these two attributes are the "Cluster List" and "Originator ID".
I think you rear to the synchronzation feature, before having RR. If the physical path is A--->B--->C, and only B and C run BGP, even though the control-plane converges (routes get installed via BGP in the RIB of A and C for let's say a prefix of 10.10.10.0/24 learned by C from A), when C forwards a packet for 10.10.10.x towards B (cause the next-hop of the BGP route which is C is reachable via B), B will drop the data packet, as B does not run BGP and does not have the route in the RIB (unless you redistributed the eBGP learned routes into your IGP so that also B has a route).
would this not use recursive route lookups?
so are you saying that router B would need to know whatever are in the routing tables of A and C ?
what would the routing table look like on A for this route?
Imagine that in the setup of A---->B----->C, you run some IGP on interconnects, your peer BGP between A and C on the interconnects, you advertise some loopback addresses over BGP. A will have a BGP route in its RIB for the Loopback of C, with a next-hop of C's IP on the interconnect with B, so C will route any packets for the Loopback of C via B, cause this is how it knows to route for the next-hop of the BGP route. When B receives the packet destined for C's Loopback, it will drop it as it has no route, those Loopbacks are advertised only by BGP.
BGP is an overlay protocol, usually peerings are multi-hop, and the transit network which means routers not running BGP (unless it's MPLS or any other tunnelling), needs to also have those routes known.
Thanks for that,
could you explain how the MPLS tunnelling works? why don't the core IGP routers need to know all the routes and allow them to peer direct? is that because of the first initial label imposed by the PE router will just get the label that matches the IP of the next hop router?
Also one last question, in the mpls scenario, do all the PE routers generally peer with each other in a full mesh, especially in an MPLS-VPN network?