ECMP/multipath support

Joakim Tjernlund joakim.tjernlund at transmode.se
Thu Dec 16 20:41:24 CET 2010


Ondrej Zajicek <santiago at crfreenet.org> wrote on 2010/12/16 00:14:43:
>
> On Wed, Dec 15, 2010 at 02:27:31PM +0100, Joakim Tjernlund wrote:
> > I remember we had an discussion about multiple unnumbered ptp links between
> > two nodes. There was a potential problem in OSPF with asymmetric routing
> > but the conclusion was that it would not happen as BIRD didn't support ECMP.
> > Now that BIRD does support ECMP, has the above "problem" been fixed too?
>
> Yes, the next hop computation was changed to handle that case.

I took a quick look and I don't think it will work reliably:
  /* The second case - ptp or ptmp neighbor */
  if ((en->lsa.type == LSA_T_RT) && (par == oa->rt))
  {
 ...

    WALK_LIST(ifa, po->iface_list)
      if (match_rtlink(ifa, rtl))
      {
	struct ospf_neighbor *m = find_neigh(ifa, rid);

	if (m && (m->state == NEIGHBOR_FULL))
	  return new_nexthop(po, m->ip, ifa->iface, ifa->ecmp_weight);
      }

    return NULL;

This will find any ptp link that matches and several of them will match.
I still think the only reliable method that will work in any case
is the one we discussed earlier. It is much faster too.

 Jocke




More information about the Bird-users mailing list