On Wed, Nov 23, 2011 at 09:13:17PM +0400, Alexander V. Chernikov wrote:
But as you already wrote the patch i could look at it.
It will be great. This version is rather hackish.
I found how this feature could be implemented in a much simpler way - if we just add to a route some 'suppress' flag (which causes the route to be skipped in the best route selection) and some rte_suppress protocol callback that is called before the best route selection that allows the protocol to suppress routes from other instances of the protocol. Because the deterministic-med best route selection can be considered as two-level linear ordering (one within the group of routes with the same neighbor ASN, and one with a slightly different ordering on the best routes from groups) we could move the lower level to the suppress protocol callback (when all routes besides the best in group would be marked as suppressed) while the standard rte_recalculate would process the unmarked best routes from groups. This approach makes almost no changes to rte_recalculate() or bgp_rte_better(), and as with a route update only one or two best-in-group routes can change, we virtually cache the other best-in-group routes so the best path selection would be probably faster than with rte_best approach. It will also work consistently without global deterministic-med option (which is problematic in BIRD approach). I will implement it soon. -- Elen sila lumenn' omentielvo Ondrej 'SanTiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."