We use CRS routers in our IGP/BGP network core, some of which are acting as BGP originators and reflectors (RRs) for IPv4 unicast. We also use CRS routers as Internet PEs. The problem we have is between those PEs and the core routers.
Premise: each Internet PE is terminating customer cisrcuits and injects those downstream routes in IGP (via redistributing static, or just learned via IGP from a downstream router). The core (P) routers then learn those routes from the PE via the IGP. Two of the P-routers act as BGP originators and install the necessary routes in BGP using the network statement. These routes are mostly supernets (i.e. summarized), but some coincide with IGP routes, as learned from the PEs. The P-routers acting as RRs then reflect all iBGP routes to all IPv4 unicast BGP speakers in the network, including the Internet PEs (we also have BGP peers on those PEs, which is why this is necessary).
Problem: if a specific downstream route, learned on an Internet PE via IGP (i.e. from downstream), is then received by that PE from an RR via iBGP (i.e. from upstream), the route is not installed in the BGP table (the output of the show bgp x.x.x.x/xx command is: Network not in table)
Question: does anyone know why this is happening? This is concictent on all of our CRS PEs. As far as I am aware there is no BGP rule that would explain this behavior. We don't expect the PE to prefer the iBGP route over the IGP route, but that should not prevent it from learning it and installing it in the BGP table... The only discrepancy I could think of is that the IGP route has a next-hop pointing downstream, whereas the the same route, learned over iBGP has a next-hop pointing upstream. Then again,this shouldn't prevent the route to appear in the BGP table....
Your help would be appreciated!