When you are running BGP on two or more routers that border your network to the outside world, you will need to configure iBGP between all of these BGP peer routers. Just as a quick refresher, iBGP routers are routers that are in the same AS, eBGP routers are in different AS’s. Of course there is a world of difference in the way BGP behaves base on whether it is internal or external . If those routers that are acting as iBGP routers and that are Cisco routers, they don’t seem to work very well unless you configure them with the “no synchronization” command.
The no synchronization command tells the iBGP routers that you don’t want them to “synchronize” iBGP with your internal routing protocol such as EIGRP or OSPF. The purpose behind synchronizing is that when you have two iBGP routers that are redistributing into another router that running an IGP protocol like EIGRP or OSPF, this non-BGP router in the middle must have the exact same routing information as the BGP routers or you will see routing loops. The way to make sure that your EIGRP or OSPF routers are receiving the the routing updates from BGP is to redistribute the BGP routing tables into EIGRP or OSPF.
Cisco expects you to do this and by default design their routers to wait for the BGP routing information to show up in your internal routing protocol table before they’ll use any of the routes the learn from BGP.
But if you don’t redistribute BGP into your IGP, the router will continue to wait for the BGP routes to show up in you internal routing protocol, which will never happen. This becomes very frustrating because none of your BGP routes will ever be used.
The “no synchronization” configuration command tells your BGP outers they shouldn’t wait for this synchronization, but just go ahead and use the iBGP routes.
Pretty simple solution to what could otherwise be a very tough to troubleshoot problem.