IBGP Full Synchronization

I don't quite understand how full IBGP Synchronization is supposed to fix the problem of the IGP not knowing of the Internet routes. In other words, if there are routers in between IBGP routers that are running, say OSPF, and one of the IBGP routers sends a packet destined for the internet to another IBGP router, the routers running OSPF don't know about how to get to the destination unless BGP is redistributed into OSPF.

Replies

Now when the update is sent to R3 from R1, the next hop is indicated as R1. So when a packet destined for NetA arrives at R3, it does a route lookup abd finds out that the network is learned by IBGP and the next hop is R1. Now it will do a recursive lookup to find out the route to the next hop R1 which will be learnt by OSPF and thus sends the packet to R2. when the packet arrives at R2, the destination does not match any prefixes on its OSPF table and hence it gets discarded

So if you decide to run IBGP instead of OSPF as your IGP, then you require a ful mesh IBGP. If you just configure the network such that R1 is the IBGP peer to R2 and R2 is IBGP peer to R3, it does not work.

This is because When routes are advertised via IBGP, they are by definition advertised within the same AS. As a result, the AS_PATH does not change. As a result, the IBGP routes do not have the loop protection that EBGP routes have. To protect against loops, BGP does not advertise routes that have been learned from an IBGP peer to another IBGP peer. Thus R2 does not advertise the networks learnt via R1 to R3.

To overcome this you create a Full IBGP mesh between all the 3 routers i.e R1 speaks BGP with both R2 as well as R3

The best option though is to let the IGP use the deafult route and forward it to the nearest edsge router where BGP can take the decision for routing on the internet

Synchronization does not fix the problem that internal routers may not have the Internet route. What synchronization fixes is not advertising a route to an External neighbor if you may not be able to forward the packet.

Perhaps a simple example may help. Lets assume that you are in AS1 and have EBGP with AS2 and AS3 (connecting from different routers). Lets assume that you learn 200.200.200.0/24 from AS2. Synchronization says do not advertise 200.200.200.0 to AS3 unless that route is know by your IGP. If you do advertise it to AS3 then you can reasonably expect AS3 to send traffic to you whose destination is 200.200.200.0 and this creates a black hole.

It is a different issue if one of the devices in your network initiates traffic to 200.200.200.0. Your router running only OSPF may not be able to forward the traffic. But it is a very different impact to drop your own traffic than it is to drop traffic from an external peer. So synchronization is to solve the external problem not the internal problem.