← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1557909] Re: SNAT namespace is not getting cleared after the manual move of SNAT with dead agent

 

Reviewed:  https://review.openstack.org/306065
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=9dc70ed77e055677a4bd3257a0e9e24239ed4cce
Submitter: Jenkins
Branch:    master

commit 9dc70ed77e055677a4bd3257a0e9e24239ed4cce
Author: Swaminathan Vasudevan <swaminathan.vasudevan@xxxxxxx>
Date:   Thu Apr 14 12:49:08 2016 -0700

    DVR: Clear SNAT namespace when agent restarts after router move
    
    When we manually move a router from one dvr_snat node to
    another dvr_snat node the snat_namespace should be removed in
    the originating node by the agent and will be re-created in the
    destination node by the destination agent.
    
    But when the agent dies, the router_update message reaches the
    agent after the agent restarts. At this time the agent should
    remove the snat_namespace since it is no more hosted by the
    current agent.
    
    Even though we do have logic in agent to take care of cleaning
    up the snat namespaces if the gw_port_host does not match with the
    existing agent host, in this particular use case the self.snat_namespace
    is always set to 'None' in the dvr_edge_router init call when agent
    restarts.
    
    This patch fixes the above issue by initializing the snat namespace
    object during the router_init. Since we do have a valid snat
    namespace object and if the gw_port_host mismatches, the agent
    should clean up the namespace.
    
    Change-Id: I30524dc77b743429ef70941479c9b6cccb21c23c
    Closes-Bug: #1557909


** Changed in: neutron
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1557909

Title:
  SNAT namespace is not getting cleared after the manual move of SNAT
  with dead agent

Status in neutron:
  Fix Released

Bug description:
  Stale snat namespace on the controller after recovery of dead l3
  agent.

  Note: Only on Stable/LIBERTY Branch:

  
  Setup:
  Multiple controller (DVR_SNAT) setup.

  Steps:
  1) Create tenant network, subnet and router.
   2) Create a external network
   3) Attached internal & external network to a router
   4) Create VM on above tenant network.
   5) Make sure VM can reach outside using CSNAT.
   6) Find router hosting l3 agent and stop the l3 agent.
   7) Manually move router to other controller (dvr_snat mode). SNAT namespace should be create on new controller node.
   8) Start the l3 agent on the controller (the one that  stopped in step6)
   9) Notice that snat namespace is now available on 2 controller and it is not getting deleted from the agent which is not hosting it.

  
  Example:
  | cfa97c12-b975-4515-86c3-9710c9b88d76 | L3 agent           | vm2-ctl2-936 | :-)   | True           | neutron-l3-agent          |
  | df4ca7c5-9bae-4cfb-bc83-216612b2b378 | L3 agent           | vm1-ctl1-936 | :-)   | True           | neutron-l3-agent          |

  
  mysql> select * from csnat_l3_agent_bindings;
  +--------------------------------------+--------------------------------------+---------+------------------+
  | router_id                            | l3_agent_id                          | host_id | csnat_gw_port_id |
  +--------------------------------------+--------------------------------------+---------+------------------+
  | 0fb68420-9e69-41bb-8a88-8ab53b0faabb | cfa97c12-b975-4515-86c3-9710c9b88d76 | NULL    | NULL             |
  +--------------------------------------+--------------------------------------+---------+------------------+


  On vm1-ctl1-936

  Stale SNAT namespace on Initially hosting controller.

  ubuntu@vm1-ctl1-936:~/devstack$ sudo ip netns
  snat-0fb68420-9e69-41bb-8a88-8ab53b0faabb
  qrouter-0fb68420-9e69-41bb-8a88-8ab53b0faabb

  
  On vm2-ctl2-936 (2nd Controller)

  ubuntu@vm2-ctl2-936:~$ ip netns
  snat-0fb68420-9e69-41bb-8a88-8ab53b0faabb
  qrouter-0fb68420-9e69-41bb-8a88-8ab53b0faabb

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1557909/+subscriptions


References