Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.

Bug 1235219

Summary: Backport of upstream locking code bugfix needed
Product: [Fedora] Fedora EPEL Reporter: Tore Anderson <tore>
Component: birdAssignee: Stanislav Kozina <stanislav.kozina>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: epel7CC: fedora, msekleta, skozina, stanislav.kozina, wt
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: bird-1.4.5-2.el7 bird-1.4.5-2.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-02-24 18:00:10 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Tore Anderson 2015-06-24 10:38:45 UTC
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
  }
}

Comment 1 Fedora Update System 2015-06-29 16:25:55 UTC
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

Comment 2 Fedora Update System 2015-06-29 16:26:51 UTC
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

Comment 3 Fedora Update System 2015-06-30 22:38:24 UTC
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).

Comment 4 Wren Turkal 2015-11-30 19:37:47 UTC
Should this be closed?

Comment 5 Stanislav Kozina 2015-12-01 11:03:15 UTC
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!

Comment 6 Fedora Update System 2016-02-24 18:00:08 UTC
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.

Comment 7 Fedora Update System 2016-02-24 18:55:00 UTC
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.