[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