VMs not receiving Router Advts in an HA network.

Bug #1440699 reported by Sridhar Gaddam
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
neutron
Fix Released
Undecided
Numan Siddique
Kilo
Incomplete
Undecided
Unassigned

Bug Description

Observations with the latest Neutron code.
1. Create a network and an IPv6 SLAAC subnet.
2. Create an HA router.
3. Associate the IPv6 subnet to the HA router.
4. Spawn a VM and check if the VM is able to get SLAAC address.

You can see that VM has only the LLA and not the GUA derived from Router Advts.

Changed in neutron:
assignee: nobody → Sridhar Gaddam (sridhargaddam)
status: New → In Progress
tags: added: ipv6
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (master)

Fix proposed to branch: master
Review: https://review.openstack.org/171570

Changed in neutron:
assignee: Sridhar Gaddam (sridhargaddam) → Numan Siddique (numansiddique)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (master)

Reviewed: https://review.openstack.org/171570
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=2f9b0ce940099bcc82d2940b99bdc387db22d6fc
Submitter: Jenkins
Branch: master

commit 2f9b0ce940099bcc82d2940b99bdc387db22d6fc
Author: sridhargaddam <email address hidden>
Date: Wed Apr 8 10:57:19 2015 +0000

    Spawn RADVD only in the master HA router

    Currently radvd is spawned in all the HA routers irrespective of the
    state of the router. This approach has the following issues.

    1. While processing the internal router ports (i.e., qr-xxx), ha_router
       removes the LLA of the interface and adds it as a VIP to Keepalived conf.
       Radvd daemon is spawned after this operation in the router namespace
       (if the port is associated with any IPv6 subnets). Radvd notices that
       qr-xxx interface does not have the LLA, so does not transmit any Router
       Advts. In this state, VMs fail to acquire IPv6 addresses because of the
       missing RAs. Radvd does not recover even after keepalived configures the
       LLA of the interface. The only solution is to restart/reload radvd daemon.
       Currently keepalived-state-change monitor does not do any radvd related
       operations when a state transition happens. So we endup in this state
       forever.
    2. For all the routers in Backup state, qr-xxx interface does not have LLA
       as it is managed by keepalived and configured only on the Master HA router.
       In such agents syslog is flooded with the messages [1] and this can cause
       loss of other useful info.
       [1] - resetting ipv6-allrouters membership on qr-2e373555-97

    This patch implements the following.
    1. If the router is already in the Master state, we configure the LLA as a VIP
       in keepalived conf but do not delete the LLA of the internal interface.
    2. We spawn radvd only if the router is in the Master State.
    3. Keepalived-state-change monitor takes care of enabling/disabling radvd upon
       state transitions.

    Closes-Bug: #1440699
    Change-Id: I351c71d058170265bbb8b56e1f7a3430bd8828d5

Changed in neutron:
status: In Progress → Fix Committed
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (stable/kilo)

Fix proposed to branch: stable/kilo
Review: https://review.openstack.org/179392

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (stable/kilo)

Reviewed: https://review.openstack.org/179392
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=a625244062203efc3db6c32efa6459d79e154300
Submitter: Jenkins
Branch: stable/kilo

commit a625244062203efc3db6c32efa6459d79e154300
Author: sridhargaddam <email address hidden>
Date: Wed Apr 8 10:57:19 2015 +0000

    Spawn RADVD only in the master HA router

    Currently radvd is spawned in all the HA routers irrespective of the
    state of the router. This approach has the following issues.

    1. While processing the internal router ports (i.e., qr-xxx), ha_router
       removes the LLA of the interface and adds it as a VIP to Keepalived conf.
       Radvd daemon is spawned after this operation in the router namespace
       (if the port is associated with any IPv6 subnets). Radvd notices that
       qr-xxx interface does not have the LLA, so does not transmit any Router
       Advts. In this state, VMs fail to acquire IPv6 addresses because of the
       missing RAs. Radvd does not recover even after keepalived configures the
       LLA of the interface. The only solution is to restart/reload radvd daemon.
       Currently keepalived-state-change monitor does not do any radvd related
       operations when a state transition happens. So we endup in this state
       forever.
    2. For all the routers in Backup state, qr-xxx interface does not have LLA
       as it is managed by keepalived and configured only on the Master HA router.
       In such agents syslog is flooded with the messages [1] and this can cause
       loss of other useful info.
       [1] - resetting ipv6-allrouters membership on qr-2e373555-97

    This patch implements the following.
    1. If the router is already in the Master state, we configure the LLA as a VIP
       in keepalived conf but do not delete the LLA of the internal interface.
    2. We spawn radvd only if the router is in the Master State.
    3. Keepalived-state-change monitor takes care of enabling/disabling radvd upon
       state transitions.

    Closes-Bug: #1440699
    Change-Id: I351c71d058170265bbb8b56e1f7a3430bd8828d5
    (cherry picked from commit 2f9b0ce940099bcc82d2940b99bdc387db22d6fc)

tags: added: in-stable-kilo
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (neutron-pecan)

Fix proposed to branch: neutron-pecan
Review: https://review.openstack.org/185072

Thierry Carrez (ttx)
Changed in neutron:
milestone: none → liberty-1
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in neutron:
milestone: liberty-1 → 7.0.0
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.