Bird 1.6.3 strange hangup
Andrew
nitr0 at seti.kr.ua
Tue Jul 4 15:34:30 CEST 2017
On 04.07.2017 15:59, Ondrej Zajicek wrote:
> On Sun, Jul 02, 2017 at 12:27:18PM +0300, Andrew wrote:
>> Hi all.
>>
>> Today I saw strange bird hangup, which results in OSPF failure in areas
>> where router is. BIRD works as OSPF + BGP. All returns to work state after
>> bird was killed by SIGKILL and started again.
>>
>> Here's strange logs records:
>>
>> Jul 2 11:33:46 gw2 bird: I/O loop cycle took 7016 ms for 35 events
>> Jul 2 11:33:57 gw2 bird: I/O loop cycle took 7208 ms for 58 events
>> Jul 2 11:34:06 gw2 bird: I/O loop cycle took 5829 ms for 31 events
> This seems like related to a problem. Do you have this messages in log
> during normal operation? Esp. since 11:36:03, it locked for 38 s,
> enough to timeout OSPF neighbors:
No, I grepped logs - there are such errors only when trouble happened,
for ~30 mins till daemon restart
>
>> Jul 2 11:36:03 gw2 bird: I/O loop cycle took 37685 ms for 22 events
> Was BIRD at least partially interactive during hangup? Did it run with
> 100 % CPU load.
I didn't look at top, but LA on server raised when trouble happens.
Also I didn't checked interactivity by birdc; but it seems like BGP
sessions with this host (according to logs on other servers) flapped
some times till bird was rebooted.
>> Jul 2 11:41:49 gw2 bird: filters, line 47: AS path expected
>> Jul 2 11:41:49 gw2 bird: filters, line 47: AS path expected
>> Jul 2 11:41:49 gw2 bird: filters, line 47: AS path expected
>> Jul 2 11:41:49 gw2 bird: filters, line 47: AS path expected
>> Jul 2 11:41:49 gw2 bird: filters, line 47: AS path expected
>> Jul 2 11:41:49 gw2 bird: ...
>>
>>
>> There's filter config where error message happens:
>>
>> function rt_client(int asn; prefix set nets)
>> {
>> return (net ~ nets &&
>> (bgp_path.first = asn || bgp_path ~ [= my_as asn * =]) &&
>> bgp_path.last = asn);
>> }
> You could avoid that 'AS path expected' error msg by checking whether the
> attribute is defined:
>
> return (net ~ nets &&
> defined(bgp_path) &&
> (bgp_path.first = asn || bgp_path ~ [= my_as asn * =]) &&
> bgp_path.last = asn);
>
Ok thanks.
More information about the Bird-users
mailing list