[Olsr-users] Howto feed routing-table into OLSRd2?

Bastian Rosner (spam-protected)
Thu Jun 18 20:41:33 CEST 2015


Hi,

it works! Thanks for the fixes!

There's one corner-case I should probably mention:

I have "unreachable" routes in one of my source tables. They are
generated by bird and I know i should get rid of these. Until now they
don't have been an issue though:

unreachable  2001:db8::1/32 dev lo  proto bird  metric 1024  error -101

When i don't specify a "matches" filter in import_lan to work around
these routes, olsrd2 segfaults.

Because of that, only tested with IPv4 so far.

Receiving side is still working fine.

Cheers,
Bastian

On 06/18/2015 12:36 PM, Henning Rogge wrote:
> Hi,
> 
> after reproducing the bug and spending half a week fixing both the
> rfc5444 fragmentation code AND a bad overload situation in the netlink
> code I just pushed a fix for your (and some other) problems.
> 
> I tested this in a VM with 20000 routes (10k IPv4, 10k IPv6) which worked fine.
> 
> Can you see if the most recent version fixes your issues? If yes I
> will tag 0.8.2.
> 
> Henning
> 
> On Sun, Jun 14, 2015 at 2:40 PM, Bastian Rosner <(spam-protected)> wrote:
>> Hi,
>>
>> patch applied. Log after startup:
>>
>> 14:36:54.484 INFO(olsrv2_routing)
>> src-plugins/olsrv2/olsrv2/olsrv2_routing.c 935: Successfully set route
>> 'src-ip 10.31.105.5 gw 169.254.1.2 dst 10.31.105.4 src-prefix - metric 2
>> table 123 protocol 100 if eth1.31 (5)'
>> 14:37:22.682 WARN(os_routing)
>> src-plugins/subsystems/os_linux/os_system_linux.c 503: netlink recvmsg
>> error: No buffer space available (105)
>> f14:37:26.877 WARN(os_routing)
>> src-plugins/subsystems/os_linux/os_system_linux.c 503: netlink recvmsg
>> error: No buffer space available (105)
>> 14:37:26.895 WARN(os_routing)
>> src-plugins/subsystems/os_linux/os_system_linux.c 503: netlink recvmsg
>> error: No buffer space available (105)
>> 14:37:27.156 WARN(os_routing)
>> src-plugins/subsystems/os_linux/os_system_linux.c 503: netlink recvmsg
>> error: No buffer space available (105)
>> 14:37:34.517 WARN(os_routing)
>> src-plugins/subsystems/os_linux/os_system_linux.c 503: netlink recvmsg
>> error: No buffer space available (105)
>>
>> It should be noted that it takes about 30s for the "no buffer space
>> avail" message to appear after startup and followup messages do not seem
>> to have a strict timing pattern.
>>
>> Cheers,
>> Bastian
>>
>> On 06/14/2015 02:22 PM, Henning Rogge wrote:
>>> Hi,
>>>
>>> can you try the following patch? It is not really a solution, I just
>>> want to see if it makes a difference.
>>>
>>> diff --git a/src-plugins/subsystems/os_linux/os_system_linux.c
>>> b/src-plugins/subsystems/os_linux/os_system_linux.c
>>> index 54c0c9bfd424..79d9baec4545 100644
>>> --- a/src-plugins/subsystems/os_linux/os_system_linux.c
>>> +++ b/src-plugins/subsystems/os_linux/os_system_linux.c
>>> @@ -224,12 +224,12 @@ os_system_netlink_add(struct os_system_netlink
>>> *nl, int protocol) {
>>>     goto os_add_netlink_fail;
>>>   }
>>>
>>> -  nl->in = calloc(1, getpagesize());
>>> +  nl->in = calloc(16, getpagesize());
>>>   if (nl->in == NULL) {
>>>     OONF_WARN(nl->used_by->logging, "Not enough memory for netlink
>>> input buffer");
>>>     goto os_add_netlink_fail;
>>>   }
>>> -  nl->in_len = getpagesize();
>>> +  nl->in_len = 16 * getpagesize();
>>>
>>>   memset(&addr, 0, sizeof(addr));
>>>   addr.nl_family = AF_NETLINK;
>>>
>>>
>>>
>>> Henning
>>>
>>> On Sun, Jun 14, 2015 at 2:17 PM, Bastian Rosner <(spam-protected)> wrote:
>>>> On 06/14/2015 02:12 PM, Henning Rogge wrote:
>>>>> On Sun, Jun 14, 2015 at 2:00 PM, Bastian Rosner <(spam-protected)> wrote:
>>>>>> Hi,
>>>>>>
>>>>>> just to make sure that this is not related to any IPv6 settings, i
>>>>>> adjusted the configuration to be IPv4-only and changed to logging behavior:
>>>>>>
>>>>>> According to logs plugin lan_import loaded fine. Also inserting
>>>>>> neighbors route to table 123 succeeded:
>>>>>>
>>>>>> 13:48:48.293 INFO(olsrv2_routing)
>>>>>> src-plugins/olsrv2/olsrv2/olsrv2_routing.c 767: Set route 'src-ip - gw
>>>>>> 169.254.1.2 dst 10.31.105.4 src-prefix - metric 2 table 123 protocol 100
>>>>>> if eth1.31 (5)' (0 0 -)
>>>>>> 13:48:48.293 INFO(olsrv2_routing)
>>>>>> src-plugins/olsrv2/olsrv2/olsrv2_routing.c 935: Successfully set route
>>>>>> 'src-ip 10.31.105.5 gw 169.254.1.2 dst 10.31.105.4 src-prefix - metric 2
>>>>>> table 123 protocol 100 if eth1.31 (5)'
>>>>>>
>>>>>> Log also contains the following message:
>>>>>>
>>>>>> 13:52:29.683 WARN(os_routing)
>>>>>> src-plugins/subsystems/os_linux/os_system_linux.c 503: netlink recvmsg
>>>>>> error: No buffer space available (105)
>>>>>>
>>>>>> Do i need to run a recent version of olsrv2 on openwrt-side to accept
>>>>>> attached-network routes generated by ubuntu's lan_import?
>>>>>
>>>>> No, there is no change needed on the receiver side...
>>>>>
>>>>> We just hit a bottleneck in the netlink code. And I used a full
>>>>> pagesize of memory for the netlink buffer!
>>>>>
>>>>> Just to be sure, how many routes are you trying to import?
>>>>
>>>> Not that many i guess:
>>>> # ip -4 r s table 100 |wc -l
>>>> 846
>>>> # ip -6 r s table 100 |wc -l
>>>> 586
>>>>





More information about the Olsr-users mailing list