We currently use garp_master_repeat and garp_master_refresh
to solve bug 1453855. We need to spawn keepalived only after
all of the qr/qg ports have been wired so that the
initial GARP will be properly sent. Otherwise you get a routing
black hole. In lieu of a proper sync method, we used those two keepalived
options to send GARPs repeatedly:
a) We did not know it never stops spamming the network
b) It causes VMs to lose their IPv6 default gateway due to a keepalived
bug, which has since been fixed, but it would need to be backported
to every keepalived version on every distro. Here's the patch: https://github.com/acassen/keepalived/pull/200
The solution this patch proposes is to drop the repeat and refresh
keepalived options. This will fix the IPv6 bug but re-introduce bug
1453855. So, this patch uses the delay option instead. It turns
out keepalived sends a GARP when it transitions to MASTER, and then
it waits a number of seconds determined by the delay option, and
sends a GARP again. We'll use an aggressive 'delay' setting to make
sure that when the node boots and the L3/L2 agents start, we'll
give the L2 agent enough time to wire the ports as a stopgap solution.
Note that this only affects initial synchronization time, not failover
times. Failover times will continue to be fast because the ports
are wired ahead of time, the initial GARP after the state transition
to MASTER will be sent properly.
Reviewed: https:/ /review. openstack. org/268348 /git.openstack. org/cgit/ openstack/ neutron/ commit/ ?id=303cbc6b5b7 45aadf026627c4c f2e90e3862b586
Committed: https:/
Submitter: Jenkins
Branch: master
commit 303cbc6b5b745aa df026627c4cf2e9 0e3862b586
Author: Assaf Muller <email address hidden>
Date: Fri Jan 15 16:47:39 2016 -0500
Fix L3 HA with IPv6
We currently use garp_master_repeat and garp_master_refresh
to solve bug 1453855. We need to spawn keepalived only after
all of the qr/qg ports have been wired so that the
initial GARP will be properly sent. Otherwise you get a routing
black hole. In lieu of a proper sync method, we used those two keepalived
options to send GARPs repeatedly:
a) We did not know it never stops spamming the network /github. com/acassen/ keepalived/ pull/200
b) It causes VMs to lose their IPv6 default gateway due to a keepalived
bug, which has since been fixed, but it would need to be backported
to every keepalived version on every distro. Here's the patch:
https:/
The solution this patch proposes is to drop the repeat and refresh
keepalived options. This will fix the IPv6 bug but re-introduce bug
1453855. So, this patch uses the delay option instead. It turns
out keepalived sends a GARP when it transitions to MASTER, and then
it waits a number of seconds determined by the delay option, and
sends a GARP again. We'll use an aggressive 'delay' setting to make
sure that when the node boots and the L3/L2 agents start, we'll
give the L2 agent enough time to wire the ports as a stopgap solution.
Note that this only affects initial synchronization time, not failover
times. Failover times will continue to be fast because the ports
are wired ahead of time, the initial GARP after the state transition
to MASTER will be sent properly.
Change-Id: I7a086472b87428 28dae08ffd915c4 5e94fb4b94e
Closes-Bug: #1520517
Related-Bug: #1453855