BIRD 2.0.7 Segmentation fault when using receive limit

Pier Carlo Chiodi pierky at pierky.com
Sat Oct 24 16:17:48 CEST 2020


Hello,

I'm getting a "Segmentation fault" error on BIRD 2.0.7 when I use 'receive
limit X'. I've got the error when using either 'action block' or 'action
disable'. In the same scenario, if I change the config to use 'import limit
X' everything works fine.

The error happens as soon as the daemon receives the first "extra" route
from its peer (in the example, the 5th route while the limit is 4). Output
of '-d -f' can be found at the bottom of this msg. If the number of routes
received from the peer is equal to the limit, the issue is not hit.

I was able to consistently reproduce what I've mentioned above using the
following config on a Docker container based on Debian 10.1 (Linux
f484b919cd3a 4.19.76-linuxkit #1 SMP Tue May 26 11:42:35 UTC 2020 x86_64
GNU/Linux - Dockerfile can be found here
https://github.com/pierky/dockerfiles/blob/master/bird/2.0.7/Dockerfile).

BIRD 1.6.8 works fine.

Thanks.

Pier Carlo


router id 192.0.2.2;
define rs_as = 999;

log "/var/log/bird.log" all;
log syslog all;
debug protocols { states, routes, filters, interfaces, events };

timeformat base         iso long;
timeformat log          iso long;
timeformat protocol     iso long;
timeformat route        iso long;

protocol device {};

ipv4 table master4 sorted;
ipv6 table master6 sorted;

filter receive_from_AS1_1 {
if !(source = RTS_BGP ) then
reject "source != RTS_BGP - REJECTING ", net;

if !(net.type = NET_IP4) then
reject "AFI not enabled for this peer - REJECTING ", net;

accept;
}

protocol bgp AS1_1 {

local as 999;
neighbor 192.0.2.11 as 1;
rs client;

passive on;
ttl security off;
interpret communities off;

# ---------------------------------------
ipv4 {
table master4;

secondary;

receive limit 4 action block;

import table on;
import keep filtered on;
import filter receive_from_AS1_1;

export none;

# ---------------------------------------
};
}




Output of '-d -f':


root at f484b919cd3a:~# bird -c /etc/bird/bird.conf -d -f
bird: device1: Initializing
bird: AS1_1: Channel ipv4 connected to table master4
bird: AS1_1: Initializing
bird: device1: Starting
bird: device1: Scanning interfaces
bird: device1: State changed to up
bird: AS1_1: Starting
bird: AS1_1: State changed to start
bird: Started
bird: AS1_1: Started
bird: AS1_1: Incoming connection from 192.0.2.11 (port 49457) accepted
bird: AS1_1: BGP session established
bird: AS1_1: State changed to up
bird: AS1_1 > added [best] 1.0.1.0/24 unicast
bird: AS1_1 < rejected by protocol 1.0.1.0/24 unicast
bird: AS1_1 > added [best] 1.0.3.0/24 unicast
bird: AS1_1 < rejected by protocol 1.0.3.0/24 unicast
bird: AS1_1 > added [best] 1.0.2.0/24 unicast
bird: AS1_1 < rejected by protocol 1.0.2.0/24 unicast
bird: AS1_1 > added [best] 1.0.5.0/24 unicast
bird: AS1_1 < rejected by protocol 1.0.5.0/24 unicast
bird: Protocol AS1_1 hits route receive limit (4), action: disable
Segmentation fault
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20201024/22e1574b/attachment.htm>


More information about the Bird-users mailing list