Comment 14 for bug 1453855

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to neutron (stable/liberty)

Reviewed: https://review.openstack.org/270652
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=c12bf81e97fcf21ce913339e581e76f657a8b4aa
Submitter: Jenkins
Branch: stable/liberty

commit c12bf81e97fcf21ce913339e581e76f657a8b4aa
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
    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.

    Conflicts:
     neutron/tests/functional/agent/test_l3_agent.py

    Change-Id: I7a086472b8742828dae08ffd915c45e94fb4b94e
    Closes-Bug: #1520517
    Related-Bug: #1453855
    (cherry picked from commit 303cbc6b5b745aadf026627c4cf2e90e3862b586)