← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1571113] Re: SNAT interface not created for dvrha in some scenarios

 

Reviewed:  https://review.openstack.org/307526
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=88a1a8cfe9d9d5bc8b0e7ff0040f28c3d3caaaa5
Submitter: Jenkins
Branch:    master

commit 88a1a8cfe9d9d5bc8b0e7ff0040f28c3d3caaaa5
Author: Adolfo Duarte <adolfo.duarte@xxxxxxx>
Date:   Fri Apr 15 07:45:38 2016 -0700

    DVRHA interfaces should be created in all cases.
    
    Interfaces owned by dvrha routers need to follow
    the device owner naming convention of dvr routers.
    Otherwise interfaces will not be created appropriately.
    
    Closes-Bug: #1571113
    
    Change-Id: I3a1fbd2d028b7caf0b2b8824c9c1d4e5eb9560f5


** 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/1571113

Title:
  SNAT interface not created for dvrha in some scenarios

Status in neutron:
  Fix Released

Bug description:
  branch: master
  commit: 4e3a9c2b9c0ada6c2a471d24a20927aa8e8f5740

  
  Depending on the order neutron router commands are given, the snat interface for a dvrha router on the dvr_snat agent might not get created. 

  
  look at following interaction: 

  
  --create a couple of network and subnets we will use (public and private)
  neutron net-create public --router:external
  neutron subnet-create public 192.168.201.0/24 --disable_dhcp
  neutron net-create n1 
  neutron subnet-create n1 101.0.0.0/24 --name s1

  -- now we create and attach router in particular order: first set
  external gateway and then attach private subnet.

  neutron router-create dvrha --distributed=True --ha=True
  neutron router-gateway-set dvrha public 
  neutron router-interface-add dvrha s1

  
  neutron router-port-list dvrha -c fixed_ips
  +--------------------------------------------------------------------------------------+
  | fixed_ips                                                                            |
  +--------------------------------------------------------------------------------------+
  | {"subnet_id": "b4a81968-8a08-4054-985f-e4e1cf687945", "ip_address": "101.0.0.3"}     |
  | {"subnet_id": "b4a81968-8a08-4054-985f-e4e1cf687945", "ip_address": "101.0.0.1"}     |
  | {"subnet_id": "782574e8-fabb-41da-a1a0-9817994ec0a5", "ip_address": "169.254.192.2"} |
  | {"subnet_id": "782574e8-fabb-41da-a1a0-9817994ec0a5", "ip_address": "169.254.192.3"} |
  | {"subnet_id": "0173f29d-746d-45a1-ad10-16dde529eb34", "ip_address": "192.168.201.4"} |
  | {"subnet_id": "782574e8-fabb-41da-a1a0-9817994ec0a5", "ip_address": "169.254.192.1"} |

  
  *** as you can see there are two interfaces on subnet 101/24: 101.0.0.3, and 101.0.0.1, one is the router interface the other is the snat interface
  THIS IS CORRECT BEHAVIOR

  *** next we change the order of the commands:
  -- first clean up
  neutron router-interface-delete dvrha s1 
  neutron router-gateway-clear dvrha 
  neutron router-delete dvrha

  -- This time, we add the internal interface before setting the
  external gateway. (reverse order of steps)

  neutron router-create dvrha --distributed=True --ha=True
  neutron router-interface-add dvrha s1
  neutron router-gateway-set dvrha public 
  neutron router-port-list dvrha -c fixed_ips
  +--------------------------------------------------------------------------------------+
  | fixed_ips                                                                            |
  +--------------------------------------------------------------------------------------+
  | {"subnet_id": "0173f29d-746d-45a1-ad10-16dde529eb34", "ip_address": "192.168.201.7"} |
  | {"subnet_id": "e9c7148e-04e5-4343-ac66-ac1651514b88", "ip_address": "169.254.192.1"} |
  | {"subnet_id": "b4a81968-8a08-4054-985f-e4e1cf687945", "ip_address": "101.0.0.1"}     |
  | {"subnet_id": "e9c7148e-04e5-4343-ac66-ac1651514b88", "ip_address": "169.254.192.2"} |
  +--------------------------------------------------------------------------------------+

  *** this time the snat interface is NOT created. 
  -- we can fix this by toggling the internal subnet connection to the router:
   neutron router-interface-delete dvrha s1 
  Removed interface from router dvrha.
  neutron router-interface-add dvrha s1 
  Added interface c3cb410d-08a0-46a5-84fb-ec7bbead4eb3 to router dvrha.
  neutron router-port-list dvrha -c fixed_ips
  +--------------------------------------------------------------------------------------+
  | fixed_ips                                                                            |
  +--------------------------------------------------------------------------------------+
  | {"subnet_id": "0173f29d-746d-45a1-ad10-16dde529eb34", "ip_address": "192.168.201.7"} |
  | {"subnet_id": "e9c7148e-04e5-4343-ac66-ac1651514b88", "ip_address": "169.254.192.1"} |
  | {"subnet_id": "b4a81968-8a08-4054-985f-e4e1cf687945", "ip_address": "101.0.0.5"}     |
  | {"subnet_id": "b4a81968-8a08-4054-985f-e4e1cf687945", "ip_address": "101.0.0.1"}     |
  | {"subnet_id": "e9c7148e-04e5-4343-ac66-ac1651514b88", "ip_address": "169.254.192.2"} |

  now  the snat port is created (101.0.0.5)

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


References