Hi, Firstly, i have to say, that its really hard to understand prefix comparison procedure calls for me, because of there are so much ways where different comparisons done inside, like prefix_cmp()/prefix_compare()/pt_prefix_cmp()/path_compare()/etc. So, I guess, I may be totally wrong here in decisions...
But anyway, it seems currently (at 6.6-stable and 6.7-stable, at least) that path selection is not performing at least for VPNv4 (not tried other AIDs yet) if we have the same prefixes with different RD while importing them to FIB. Normally, at this stage there should be path selection accomplished (or ECMP multipath used, if supported). But instead, both prefixes are present in rdomain's rib, and the only newest one is used as active even if others have better attributes (route-age evaluation is not enabled by default). I tried to research is that caused by different rd, or by some broken comparison itself, but i guess that things get broken somewhere with commit evision 1.189 (tagged as "bgpd adj-rib-out rewrite") or so around, because of since that we have static prefix_cmp() in rde_rib translation unit, and so functions like prefix_add()/prefix_move()/prefix_update() are missing prefix_cmp() defined in rde_decide translation unit, which is actually do bgp path selection. The peer setup is ebgp-peer advertises multiple VPNv4 prefixes with different RD to the bgpd-peer, say, rd1:x.x.x.x/y rd2:x.x.x.x/y rd3:x.x.x.x/y where x.x.x.x/y are equal but have different as-path length, or changed lpref in bgpd config with set attributes filter. Prefix which advertised last becomes active prefix for the FIB. Again, may be I dont understand something, but it does not work.