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