I have successfully been running this on bird 2.0.8 with the next hop self ebgp option. Thank you for the suggestions!
One last question about this scenario:
Lets assume that my AS999 announces two prefixes:
1.1.1.0/24 and
2.2.2.0/24 to ebgp peers (via RR1 and RR2)
On RR1 client I export
1.1.1.1/32 to RR1 and RR2 (rr1 client has an ibgp connection to each RR).
On RR2 client I export
2.2.2.2/32 to RR1 and RR2 (rr2 client has an ibgp connection to each RR).
With this above, I have weird issues with the /32 prefixes.
I guess this is because each /32 prefix is then reachable from two
places (it is learned from RR client to RR ibgp connection and via an
ibgp connection between RRs) and the routing table is not optimal.
The way I had "fixed" it was creating an import filter on the IBGP connection between RRs and setting the preference of the /32 prefixes to 90 (lower than the rest).
#example of one side
protocol bgp ibgp {
local as 999;
neighbor 10.0.0.2 as 999;
source address 10.1.0.1;
next hop self;
rr cluster id 0.0.0.1;
import filter {
preference = 90;
}
accept;
}
}
With that said, is this a correct fix, or is there a more generic solution around this issue?