[quagga-users 6409] Re: Problems updating kernel routing table

Paul Jakma paul at clubi.ie
Wed Feb 1 00:26:57 GMT 2006


On Tue, 31 Jan 2006, Sérgio Gomes wrote:

> Hello everyone,
>
> I've been having some problems with Anycasting and OSPFv3 (IPv6) in 
> Quagga. I've set up a simple network, where I have one main router 
> (ROUTER) connecting to two other routers (SUB1 and SUB2). Both SUB1 
> and SUB2 have each an interface with the anycast address.

/me tries to remember exactly in what way on-link 'anycast' is
     special in IPv6

> All of that is working perfectly. ROUTER reads two routes to the 
> anycasted address, one through SUB1 and another through SUB2. When 
> I update the cost of SUB1 - anycast address or SUB2 - anycast 
> address, the LSA is transmitted and the configuration of OSPFv3 is 
> updated correctly.
>
> Here is an example, with 3ffe:ffff:0:f103::/64 as the anycasted 
> subnetwork.

> Before cost change:
>
> # show ipv6 ospf6 route intra-area
> [...]
> *N IA 3ffe:ffff:0:f103::/64          fe80::201:29ff:fed0:7c84    eth2 00:09:04
> N IA 3ffe:ffff:0:f103::/64          fe80::201:29ff:fed0:8b59    eth1 00:08:23

> After cost change:
>
> # show ipv6 ospf6 route intra-area
> [...]
> *N IA 3ffe:ffff:0:f103::/64          fe80::201:29ff:fed0:8b59    eth1 00:00:04
> N IA 3ffe:ffff:0:f103::/64          fe80::201:29ff:fed0:7c84    eth2 00:09:44

> We see that OSPFv3 decided after the cost change that the route 
> through eth1 (SUB1) was the best, whereas before eth2 (SUB2) was 
> preferred, which is correct according to the values I used.

> The problem lies in the updating of the kernel routing tables, I 
> believe. Below we see the kernel routing table (trimmed to show 
> only the anycast range).

> At startup (remember that at startup the route through eth2 has the lowest
> total cost):
>
> # route -A inet6
> Kernel IPv6 routing table
> Destination                                 Next Hop    Flags Metric Ref
> Use Iface
> [...]
> 3ffe:ffff:0:f103::/64                       fe80::201:29ff:fed0:7c84    UG
> 1024   90       1 eth2
>
>
> After a cost update (now it is the route through eth1 with the lowest cost):
>
> # route -A inet6
> Kernel IPv6 routing table
> Destination                                 Next Hop    Flags Metric Ref
> Use Iface
> [...]
> 3ffe:ffff:0:f103::/64                       fe80::201:29ff:fed0:7c84    UG
> 1024   163       1 eth2
> 3ffe:ffff:0:f103::/64                       fe80::201:29ff:fed0:8b59    UG
> 1024   0        0 eth1


> I believe that the problem is that the Linux kernel keeps using the 
> first one and does not switch to the second.

That's presuming 'zebra' is:

a) getting the route update from ospf6d
b) communicating it to the kernel

Can you show us:

 	show ipv6 ro <prefix concerned>

from zebra?

Also, can you show the linux kernel routes using the 'ip route' 
utility, rather than netstat?

> So my question is: is this a bug in Quagga or the operating system, 
> and is there any way I can solve it? The correct updating of the 
> routes in this situation is critical for the network I'm building.

Depends.

regards,
-- 
Paul Jakma	paul at clubi.ie	paul at jakma.org	Key ID: 64A2FF6A
Fortune:
Increased sunspot activity.


More information about the Quagga-users mailing list