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 (22.214.171.124/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 126.96.36.199 redistribute connected route-map ONLY_LOOPBACK router bgp 100 ! sync is enabled synchronization bgp log-neighbor-changes network 188.8.131.52 mask 255.255.255.255 ! R8 neighbor neighbor 184.108.40.206 remote-as 100 neighbor 220.127.116.11 route-reflector-client ! R4 neighbor neighbor 18.104.22.168 remote-as 100 neighbor 22.214.171.124 route-reflector-client
R1 does not have an IGP route to 126.96.36.199/8 (EIGRP) and does not run any other routing protocol:
R1#sh ip eigrp topo 188.8.131.52/8 EIGRP-IPv4 Topology Entry for AS(100)/ID(184.108.40.206) %Entry 220.127.116.11/8 not in topology table
BGP also marks both possible paths to 18.104.22.168/8 as not synchronized:
R1# sh ip bgp 22.214.171.124 BGP routing table entry for 126.96.36.199/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) 188.8.131.52 (metric 3328) from 184.108.40.206 (220.127.116.11) 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) 18.104.22.168 (metric 3072) from 22.214.171.124 (126.96.36.199) 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 188.8.131.52 BGP routing table entry for 184.108.40.206/8, version 0 Paths: (1 available, no best path) Not advertised to any peer Refresh Epoch 2 54 50 60 220.127.116.11 (inaccessible) from 18.104.22.168 (22.214.171.124) Origin IGP, metric 0, localpref 100, valid, internal, not synchronized Originator: 126.96.36.199, Cluster list: 188.8.131.52 rx pathid: 0, tx pathid: 0
It is advertised from R1 (184.108.40.206 / 220.127.116.11). 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?