Description of problem: BIRD will completely stop to transmit RIPng advertisements if Keepalived removes two IPv6 addresses from an interface. It will not resume transmitting advertisements at any point, in order to recover you need to restart it. The underlying cause is a locking bug which was fixed upstream in BIRD 1.5.0: https://gitlab.labs.nic.cz/labs/bird/commit/ab006391305165c805f75e3a2ce20946748233c9 This patch applies cleanly to BIRD 1.4.5, and I've confirmed that it fixes the RIPng. Please backport it to the BIRD 1.4.5 packages in EPEL. Note that the RIPng issue only occurs if BIRD was compiled with CFLAGS="-O2". That's the case with the EPEL package. Version-Release number of selected component (if applicable): bird-1.4.5-1.el7.x86_64 How reproducible: 100% Steps to Reproduce: 1. Start Keepalived (using the config below) on a machine with IPv6 connectivity on eth0, and wait for it to enter MASTER state 2. Start BIRD (using the config below) 3. Observe with "tcpdump -i eth0 -vns0 port 521" how the outgoing RIPng advertisements contains three routes: the primary link prefix on eth0, and the two Keepalived-handled addresses 4. Stop Keepalived 5. Observe with tcpdump how the advertisements now only contain a single route: the primary link prefix on eth0 6. Start Keepalived and wait for it to enter MASTER state 7. (Same as step #3) 8. Stop Keepalived Actual results: No RIPng advertisements are being sent. Adding addresses back (e.g., by starting Keepalived) does not change this. The only way to bring it back to life is to restart BIRD. Expected results: As step #5 - RIPng advertisements should continue for the active route (the link prefix on eth0). When adding addresses back, these should also be automatically advertised in subsequent RIPng advertisements. Additional info: I do not know why, but I have not been successful in reproducing the problem using standard "ip address add" and "ip address delete" commands, I need to use Keepalived. Also, it seems crucial that Keepalived is handling *two* virtual addresses - I cannot reproduce the bug if there is only one virtual address. bird6.conf: ----------- log syslog { info, remote, warning, error, auth, fatal }; router id 10.20.30.40; protocol device { primary "lo" ::1; } protocol direct {} protocol rip { interface "*" { mode nolisten; ttl security on; }; period 1; import none; export filter { if net ~ ::/0 then accept; reject; }; } keepalived.conf: ---------------- vrrp_instance vr_eth0 { state BACKUP interface eth0 virtual_router_id 42 virtual_ipaddress { 2001:db8::1/128 2001:db8::2/128 } }
bird-1.4.5-2.el7 has been submitted as an update for Fedora EPEL 7. https://admin.fedoraproject.org/updates/bird-1.4.5-2.el7
bird-1.4.5-2.el6 has been submitted as an update for Fedora EPEL 6. https://admin.fedoraproject.org/updates/bird-1.4.5-2.el6
Package bird-1.4.5-2.el7: * should fix your issue, * was pushed to the Fedora EPEL 7 testing repository, * should be available at your local mirror within two days. Update it with: # su -c 'yum update --enablerepo=epel-testing bird-1.4.5-2.el7' as soon as you are able to. Please go to the following url: https://admin.fedoraproject.org/updates/FEDORA-EPEL-2015-6980/bird-1.4.5-2.el7 then log in and leave karma (feedback).
Should this be closed?
Hi Warren, The package is available in the testing repo. Please leave some karma if it's working fine for you, then it can be moved to the normal repo. Thanks!
bird-1.4.5-2.el7 has been pushed to the Fedora EPEL 7 stable repository. If problems still persist, please make note of it in this bug report.
bird-1.4.5-2.el6 has been pushed to the Fedora EPEL 6 stable repository. If problems still persist, please make note of it in this bug report.