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