[Olsr-dev] [Olsr-users] OLSR 0.6.5.2 QUAGGA plugin but does not export all routes to QUAGGA

Saverio Proto (spam-protected)
Tue Apr 9 00:48:46 CEST 2013


Hello,

please I still don't have some information.

what version of OLSR you are using ?

can you reproduce the same bug with my version of Quagga and the latest OLSR ?

if you can't, then we can say for sure the problem is in QUAGGA MDR.

in such case the only person that can really help you is Vasilis

ciao :)

Saverio


2013/4/5 Ros Molodyko <(spam-protected)>:
> Hello Saverio,
>
> thank you for the fast response.
>
>    I use QUAGGA 0.99.21mr2.2 with the OLSR patch from Vasilis (zebra_rib.c file required manual porting since MDR is slightly different from the baseline of QUAGGA)
>
>    Also I modified the OLSR indicator in the lib/route_types.txt from "o" to "l" to distinguish it from OSPF6:
> ===========================================================
> ZEBRA_ROUTE_OSPF6,      ospf6,     ospf6d, 'o', 1, 1, "OSPF6"
> ZEBRA_ROUTE_OLSR,       olsr,      olsrd,  'l', 1, 1, "OLSR"
> ===========================================================
>
>    I guess I found one bug in the olsr-quagga plugin, one potential bug (or feature?) in the QUAGGA patch, and one potential solution.
>
>    The first bug is the not supported parameter "ExportRoutes" "both" in the olsr-quagga plugin.
>    The second potential bug is the route type in the QUAGGA patch.
>
>    I ran show "ip route olsr" and got nothing, all routes from OLSR cluster were "kernel ones":
>
> =============================================
> # "10.0.0.0/32, PlParam "ExportRoutes" "both"
>
> n1# show ip route olsr
> n1# show ip route kernel
> Codes: K - kernel route, C - connected, S - static, R - RIP,
>        O - OSPF, o - OSPF6, I - IS-IS, B - BGP, H - HSLS,
>        l - OLSR, b - BATMAN, A - Babel,
>        > - selected route, * - FIB route
>
> K * 10.0.0.2/32 via 10.0.0.2, eth0 inactive
> K * 10.0.0.3/32 via 10.0.0.3, eth0 inactive
> K * 10.0.0.4/32 via 10.0.0.3, eth0 inactive
> K * 10.0.0.5/32 via 10.0.0.3, eth0 inactive
> K * 10.0.0.6/32 via 10.0.0.6, eth0 inactive
> K * 10.0.0.7/32 via 10.0.0.7, eth0 inactive
> K * 10.0.0.8/32 via 10.0.0.2, eth0 inactive
> =============================================
>
>    So OLSR exported routes as "kernel", that's why "redistribute olsr" command
> in the OSPF configuration did not work! Neither "redistribute kernel" worked because of "inactive" status of routes. (For the network 10.0.0.0/24 only directly connected nodes
> had inactive route status, so "redistribute kernel" injected few routes to QUAGGA).
>
>    Only when I changed the "ExportRoutes" to "only" OLSR exported routes as "olsr".
>
> =============================================
> # "10.0.0.0/32, PlParam "ExportRoutes" "only"
>
> n1# show ip route kernel
> n1# show ip route olsr
> Codes: K - kernel route, C - connected, S - static, R - RIP,
>        O - OSPF, o - OSPF6, I - IS-IS, B - BGP, H - HSLS,
>        l - OLSR, b - BATMAN, A - Babel,
>        > - selected route, * - FIB route
>
> l>* 10.0.0.2/32 [125/1] is directly connected, eth0, 00:01:07
> l>* 10.0.0.3/32 [125/1] is directly connected, eth0, 00:01:06
> l>  10.0.0.4/32 [125/2] via 10.0.0.3, eth0, 00:00:57
> l>  10.0.0.5/32 [125/2] via 10.0.0.3, eth0, 00:01:00
> l>* 10.0.0.6/32 [125/1] is directly connected, eth0, 00:01:08
> l>* 10.0.0.7/32 [125/1] is directly connected, eth0, 00:01:07
> l>  10.0.0.8/32 [125/2] via 10.0.0.2, eth0, 00:00:35
> =============================================
>
>    I looked at the patch code lib/quagga/src/plugin.c and found the only supported "ExportRoutes" parameters "only" and "additional" in the zplugin_exportroutes().
> Looks like the parameter "both" listed in the README_QUAGGA file is not handled.
>
>    With "ExportRoutes" "only" QUAGGA redistributed OLSR routes to the OSPF domain, but the gateway node n1 still did not have the one-hop neighbors in the FIB:
>
> ==============================================================================
> [(spam-protected) n1.conf]# route -n
> Kernel IP routing table
> Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
> 10.0.0.5        10.0.0.3        255.255.255.255 UGH   2      0        0 eth0
> 10.0.0.4        10.0.0.3        255.255.255.255 UGH   2      0        0 eth0
> 10.0.0.8        10.0.0.2        255.255.255.255 UGH   2      0        0 eth0
> 10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
> 10.0.2.0        10.0.1.2        255.255.255.0   UG    20     0        0 eth1
> [(spam-protected) n1.conf]#
> ==============================================================================
>
>    Only after I commented out the statement in the QUAGGA patch zebra/rt_netlink.c:
> "if (rib->type == ZEBRA_ROUTE_OLSR) req.r.rtm_scope = RT_SCOPE_LINK;"
> the gateway n1 got all routes in the FIB and all tests passed fine with OLSR-OSPF(wired) and
> OLSR-OSPF6/MDR(wireless) routing protocols:
>
> ==============================================================================
> n1# sho ip ro olsr
> Codes: K - kernel route, C - connected, S - static, R - RIP,
>        O - OSPF, o - OSPF6, I - IS-IS, B - BGP, H - HSLS,
>        l - OLSR, b - BATMAN, A - Babel,
>        > - selected route, * - FIB route
>
> l>* 10.0.0.2/32 [125/1] is directly connected, eth0, 00:03:15
> l>* 10.0.0.3/32 [125/1] is directly connected, eth0, 00:03:15
> l>* 10.0.0.4/32 [125/2] via 10.0.0.3, eth0, 00:03:06
> l>* 10.0.0.5/32 [125/2] via 10.0.0.3, eth0, 00:03:09
> l>* 10.0.0.6/32 [125/1] is directly connected, eth0, 00:03:18
> l>* 10.0.0.7/32 [125/1] is directly connected, eth0, 00:03:18
> l>* 10.0.0.8/32 [125/2] via 10.0.0.2, eth0, 00:02:44
> n1#
>
> [(spam-protected) n1.conf]# route -n
> Kernel IP routing table
> Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
> 10.0.0.5        10.0.0.3        255.255.255.255 UGH   2      0        0 eth0
> 10.0.0.4        10.0.0.3        255.255.255.255 UGH   2      0        0 eth0
> 10.0.0.7        0.0.0.0         255.255.255.255 UH    1      0        0 eth0
> 10.0.0.6        0.0.0.0         255.255.255.255 UH    1      0        0 eth0
> 10.0.0.3        0.0.0.0         255.255.255.255 UH    1      0        0 eth0
> 10.0.0.2        0.0.0.0         255.255.255.255 UH    1      0        0 eth0
> 10.0.0.8        10.0.0.2        255.255.255.255 UGH   2      0        0 eth0
> 10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
> 10.0.2.0        10.0.1.2        255.255.255.0   UG    20     0        0 eth1
> [(spam-protected) n1.conf]#
> ==============================================================================
>
> I'm not sure if the RT_SCOPE_LINK route scope is the bug - it may be correct setting for
> the baseline QUAGGA but invalid for QUAGGA/MDR branch. I think it worth to be noticed
> in README.
>
> Regards,
>
> Rostislav Molodyko
> Mayflower Communications




More information about the Olsr-dev mailing list