bird + RIP = crash

Eugene M. Zheganin emz at norma.perm.ru
Mon Sep 16 15:16:10 CEST 2013


Hi.

I'm  trying to get rid of quagga on most of my routers. When they run
BGP/OSPF everything is fine, but when it comes to RIP, bird crashes.
I run bird on a set of VPN tunnels, mostly gre. I need RIP because Cisco
marketoids keep on manufacturing small boxes that cannot run OSPF, only
RIP is available.
Bird crashes as soon as the protocol exchange is started.

Here's a backtrace along with some info about the setup:

===Cut===
[emz at moscow-alpha:~/bird.cores]# gdb /usr/local/sbin/bird bird.core
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd"...
Core was generated by `bird'.
Program terminated with signal 6, Aborted.
Reading symbols from /lib/libc.so.7...done.
Loaded symbols for /lib/libc.so.7
Reading symbols from /libexec/ld-elf.so.1...done.
Loaded symbols for /libexec/ld-elf.so.1
#0  0x00000008007a3abc in kill () from /lib/libc.so.7
(gdb) bt full
#0  0x00000008007a3abc in kill () from /lib/libc.so.7
No symbol table info available.
#1  0x00000008007a28bb in abort () from /lib/libc.so.7
No symbol table info available.
#2  0x000000000044ef49 in bug (msg=Could not find the frame base for "bug".
) at log.c:254
        args = Could not find the frame base for "bug".
(gdb) bt
#0  0x00000008007a3abc in kill () from /lib/libc.so.7
#1  0x00000008007a28bb in abort () from /lib/libc.so.7
#2  0x000000000044ef49 in bug (msg=Could not find the frame base for "bug".
) at log.c:254
#3  0x0000000000437aa6 in advertise_entry (p=0x800a1f920, b=0x800a5b004,
whotoldme=2886730539, iface=0x0)
    at ../../../proto/rip/rip.c:330
#4  0x0000000000437d07 in process_block (p=0x800a1f920,
block=0x800a5b004, whotoldme=2886730539, iface=0x0)
    at ../../../proto/rip/rip.c:386
#5  0x0000000000438054 in rip_process_packet (p=0x800a1f920,
packet=0x800a5b000, num=1, whotoldme=2886730539,
    port=520, iface=0x0) at ../../../proto/rip/rip.c:449
#6  0x0000000000438349 in rip_rx (s=0x800a0e400, size=20) at
../../../proto/rip/rip.c:504
#7  0x00000000004497ef in sk_read (s=0x800a0e400) at io.c:1493
#8  0x0000000000449fe4 in io_loop () at io.c:1707
#9  0x00000000004504fd in main (argc=3, argv=0x7fffffffed48) at main.c:745
(gdb)
===Cut===

===Cut===
[emz at moscow-alpha:~/bird.cores]# uname -a
FreeBSD moscow-alpha 8.3-PRERELEASE FreeBSD 8.3-PRERELEASE #1: Thu Mar
29 16:14:11 MSK 2012     emz at moscow-alpha:/usr/obj/usr/src/sys/MOSCOW  amd64
===Cut===

===Cut===
/* would be nice to have named lists for these ! :) */
filter importripv4 {
    if net ~ [ 94.159.37.112/29, 192.168.21.0/24, 172.16.0.95/32,
172.16.3.4/32, 172.16.3.26/32, 172.16.3.28/32, 172.16.3.32/32,
172.16.3.36/32, 172.16.3.42/32, 172.16.3.48/32, 172.16.3.50/32,
172.16.3.66/32, 172.16.3.68/32, 172.16.3.106/32, 172.16.3.108/32,
172.16.3.116/32, 172.16.3.132/32, 172.16.3.136/32, 172.16.3.142/32,
172.16.3.144/32, 172.16.3.146/32, 172.16.3.154/32, 172.16.3.174/32,
172.16.3.184/32, 172.16.3.188/32, 172.16.3.252/32, 172.16.5.0/32,
172.16.5.2/32, 172.16.5.4/32, 172.16.5.8/32, 172.16.0.94/32,
172.16.3.5/32, 172.16.3.27/32, 172.16.3.29/32, 172.16.3.33/32,
172.16.3.37/32, 172.16.3.43/32, 172.16.3.49/32, 172.16.3.51/32,
172.16.3.67/32, 172.16.3.69/32, 172.16.3.107/32, 172.16.3.109/32,
172.16.3.117/32, 172.16.3.133/32, 172.16.3.137/32, 172.16.3.143/32,
172.16.3.145/32, 172.16.3.147/32, 172.16.3.155/32, 172.16.3.175/32,
172.16.3.185/32, 172.16.3.189/32, 172.16.3.253/32, 172.16.5.1/32,
172.16.5.3/32, 172.16.5.5/32, 172.16.5.9/32 ] then reject;
    accept;
}

filter exportripv4 {
    if source = RTS_BGP then reject;
    if net ~ [ 94.159.37.112/29 ] then reject;
    accept;
}

protocol rip ripv4 {
       interface "gre21", "gre25", "gre6";
       honor neighbor;
       import filter importripv4;
       export filter exportripv4;
}
===Cut===

===Cut===
[emz at moscow-alpha:/]# ifconfig gre21
gre21: flags=b051<UP,POINTOPOINT,RUNNING,LINK0,LINK1,MULTICAST> metric 0
mtu 1476
        tunnel inet 94.159.37.114 --> 188.133.159.62
        inet 172.16.3.184 --> 172.16.3.185 netmask 0xffffffff
[emz at moscow-alpha:/]# ifconfig gre25
gre25: flags=b051<UP,POINTOPOINT,RUNNING,LINK0,LINK1,MULTICAST> metric 0
mtu 1476
        tunnel inet 94.159.37.114 --> 178.219.36.237
        inet 172.16.5.2 --> 172.16.5.3 netmask 0xffffffff
[emz at moscow-alpha:/]# ifconfig gre6
gre6: flags=b051<UP,POINTOPOINT,RUNNING,LINK0,LINK1,MULTICAST> metric 0
mtu 1476
        tunnel inet 94.159.37.114 --> 213.33.223.158
        inet 172.16.3.42 --> 172.16.3.43 netmask 0xffffffff
===Cut===


Thanks.
Eugene.



More information about the Bird-users mailing list