To be more clear i mean this one commit on rde_rib.c, but again im not sure. https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.sbin/bgpd/rde_rib.c?rev=1.189&content-type=text/x-cvsweb-markup
пн, 12 окт. 2020 г. в 13:52, Bars Bars <tutbara...@gmail.com>: > 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. > >