Dear Li,

nice to hear from you.

1st: i have send in a bugfix:
http://www.freebsd.org/cgi/query-pr.cgi?pr=149917


I have changed the route selection code of ecmp to
balance only between routes of the same weight.
(see attached file)

As Qing Li mentioned months ago, there are problems with static routes
and interfaces.


 Do you have the exact link to the email thread?
 There were no pending ECMP related issues since my last round of
commits
 as far as I can remember.

http://lists.freebsd.org/pipermail/freebsd-net/2010-January/024420.html
http://lists.freebsd.org/pipermail/freebsd-net/2010-February/024539.html

Example 1:
ifconfig em1 alias 10.13.13.90/24
        ping 10.13.13.95 ok
route add 10.13.13.0/24 10.11.11.1 -weight 2
        ping 10.13.13.95 broken (arpresolve: can't allocate llinfo for
                                10.13.13.95)


 Could you please explain a bit on exactly what you try to
 accomplish here with this configuration?

rebuilding my core-routers.
it's a very special setup:

2 redundat core routers, connected via ospf (quagga),
vrrp to server-side.
currently I use a very modfied ucarp version because freebsd 6 only allows on route. problem is with standard freebsd and carp, that there is at the failover router a via ospf received route to the server-side interface. when now carp tries to add the route during failover, it fails. and seconds later the ospf route times out.

so, i hoped to use carp, quagga and freebsd ecmp to be able to avoid this problems now. so I need route-merics (weights?) to prefer direct interface routes (connected) before static ones. perhaps I also need to change quagga to send also the merics to the kernel, as in differnce to, for example, cisco router, connected and static routes have the same weight.

deleting the last static multipath routes seems to affect?, destroy?
the interface route.
system crashes in:
/usr/src/sys/net/route.c:370
         rn = rnh->rnh_matchaddr(dst, rnh);
         if (rn && ((rn->rn_flags & RNF_ROOT) == 0)) {
                 newrt = rt = RNTORT(rn);
here ->         RT_LOCK(newrt);
                 RT_ADDREF(newrt);
                 if (needlock)


 I will take a look.

thanks.

Kind regards,
        Ingo Flaschberger

_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[email protected]"

Reply via email to