On Wed, 25 Nov 2015, Daniel Walton wrote:

      On the (non-deterministic) 'oldest' test. Should we kill that
      too then? I'd be fine for making it do the remote-ID check (i.e.
      making COMPARE_ROUTER_ID unconditionally always the case).

I wouldn't, if we do we may have users start hitting MED churn.

Hmm, but if we're getting to the Remote-ID checks then IGP and MED have already been passed and not chosen a preference? After that we're either down the "select oldest" code-path or the "select on remote-IDs" code-path.

The former is only locally deterministic, but not deterministic across hosts.

The latter should totally order the paths, and reliably always select one path, across hosts, according to the peer injecting it into iBGP, or the eBGP peer it was received from.

Is that right?

Wouldn't the latter be more preferable?

With the latter, I /know/ ahead of time what my BGP will converge on. With the former, it could be completely unpredictable, differing from day to day on arbitrary factors, inc. the phase of the moon (don't laugh - your servers could be on a grid using tidal hydro-electric power, supply phase and freq could differ slightly depending on the tides, maybe affecting timing of things. ;) ).

Also, Cumulus wants to sort of raise cluster-list length check, because you had topologies where everything was selecting the same way by remote-ID. That meant COMPARE_ROUTER_ID must have been enabled?

      Do they _really_ want the second case though? :)


Their logic was why serve two paths from ATT, just pick the bestpath from ATT and serve that one. Seems logical to me :)

But it does mean having to do N sets of best-path comparisons, where N is the number of neighbour ASes. Ok, I imagine often each set will be just 1 path (only 1 peering to that AS), and that'll be cheap. However, where it's cheap (each set of N tends be 1 in size), it's also "useless" in the sense it produces same result as send-all.

The more the "|N| tends to be 1" isn't the case, the more expensive this gets. The cases where this is most useful to clients will be the cases where it is the most expensive to do centrally.

      Least, does it really need to be a DMED comparison?

Technically no, we just need to know what the bestpath is per neighbor-AS but DMED figures this out for us so we take advantage of that. Without DMED we do not have a code path to compute the bestpath per neighbor-AS.

Aha. Ok. Got ya now.

So, we could equally still nuke DMED, and then just do the best-neighbour-as-path in the most efficient manner (i.e. sort the paths first and do a single-pass through each set, instead of comparing across every combination)?

Today no, because without DMED we wouldn't calculate what the bestpath per
neighbor-AS is.

I will help with a sorted version of best-neighbour-as-path, if it means we can get rid of DMED :).

I don't think it is something we could chop...we can't really say "the only option for our bestpath algorithm is non-deterministic". Agree 100% it could be made more effecient.

Hmm... If we don't make COMPARE_ROUTERID the default, it's not deterministic anyway (other than in a trivial local sense) - regardless?

regards,
--
Paul Jakma, HPE Networking, Advanced Technology Group
Fortune:
IF I HAD A MINE SHAFT, I don't think I would just abandon it.  There's
got to be a better way.
                -- Jack Handley, The New Mexican, 1988.

_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to