As far as I understand, BGP synchronization is a feature now disabled by default. It only allows iBGP routes to be selected as best (and hence further advertised to other neighbors) if there is a matching IGP route.
I have a router (R1) running both BGP (in AS100) and EIGRP. The Router is route reflector in AS100 and connected to another router (R8) which in turn is connected to R10 in AS54. R8 learns a route from R10 (188.8.131.52/8), which it advertises further to R1. These external routers are not redistributed into EIGRP, hence are not available at R1 through other means than BGP.
R1#sh run | s eigrp|bgp router eigrp 100 network 184.108.40.206 redistribute connected route-map ONLY_LOOPBACK router bgp 100 ! sync is enabled synchronization bgp log-neighbor-changes network 220.127.116.11 mask 255.255.255.255 ! R8 neighbor neighbor 18.104.22.168 remote-as 100 neighbor 22.214.171.124 route-reflector-client ! R4 neighbor neighbor 126.96.36.199 remote-as 100 neighbor 188.8.131.52 route-reflector-client
R1 does not have an IGP route to 184.108.40.206/8 (EIGRP) and does not run any other routing protocol:
R1#sh ip eigrp topo 220.127.116.11/8 EIGRP-IPv4 Topology Entry for AS(100)/ID(18.104.22.168) %Entry 22.214.171.124/8 not in topology table
BGP also marks both possible paths to 126.96.36.199/8 as not synchronized:
R1# sh ip bgp 188.8.131.52 BGP routing table entry for 184.108.40.206/8, version 2 Paths: (2 available, best #2, table default) Advertised to update-groups: 1 Refresh Epoch 1 54 50 60, (Received from a RR-client) 220.127.116.11 (metric 3328) from 18.104.22.168 (22.214.171.124) Origin IGP, metric 0, localpref 100, valid, internal, not synchronized rx pathid: 0, tx pathid: 0 Refresh Epoch 1 54 50 60, (Received from a RR-client) 126.96.36.199 (metric 3072) from 188.8.131.52 (184.108.40.206) Origin IGP, metric 0, localpref 100, valid, internal, not synchronized, best rx pathid: 0, tx pathid: 0x0
According to my knowledge, both of them are internal routes (received from an iBGP peer) and both are not synchronized. Hence they should not be considered as candidate for best path and R1 should not advertise that path any further.
However, as seen before, it has still selected path #2 as best and advertises the path further to other RR-clients, for example to R4:
R4#sh ip bgp 220.127.116.11 BGP routing table entry for 18.104.22.168/8, version 0 Paths: (1 available, no best path) Not advertised to any peer Refresh Epoch 2 54 50 60 22.214.171.124 (inaccessible) from 126.96.36.199 (188.8.131.52) Origin IGP, metric 0, localpref 100, valid, internal, not synchronized Originator: 184.108.40.206, Cluster list: 220.127.116.11 rx pathid: 0, tx pathid: 0
It is advertised from R1 (18.104.22.168 / 22.214.171.124). At R4, the route is considered as not synchronized and accordingly there is no best path. But why is it advertised by R1 in the first place? Why does R1 select a best path when both available paths are not synchronized?