There are only two requirements for BGP learned routes to be injected into the IP routing table:
- The eBGP route in the BGP table is considered to be a ‘best’ route
- If the same prefix has been learned through another IGP or through static routes the AD for BGP external routes must be lower than the AD of any other routing source.
eBGP Ad by default is 20, and is lower than any other dynamic routing protocol AD except for EIGRP summary routes which are Ad of 5.
The reason behind this is that eBGP routes are supposed to be learned from outside the AS, so technically these routes should not exist WITHIN the AS.
Same requirements apply for iBGP learned routes, however additionally IOS considers BGP sync.
BGP sync does not consider iBGP routes in the BGP table to be ‘best’ unless the exact prefix was learned through an IGP and is currently in the routing table. This prevents certain iBGP routes from being advertised to other AS’s if all routers within an iBGP AS have reachability to the respective prefixes internally.