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.

Reply via email to