← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1541406] Re: IPv6 prefix delegation does not work with DVR

 

Reviewed:  https://review.openstack.org/277657
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=7b5f01c2e58cd21ab3d46676ee6a3288012fbb45
Submitter: Jenkins
Branch:    master

commit 7b5f01c2e58cd21ab3d46676ee6a3288012fbb45
Author: Brian Haley <brian.haley@xxxxxxx>
Date:   Tue Jan 24 13:34:58 2017 -0500

    Add IPv6 Prefix Delegation support for DVR
    
    Unlike Legacy routers, DVR Edge Routers have their gateway
    interfaces in the SNAT namespace as opposed to the router
    namespace.  Added a new method to the router_info class,
    get_gw_ns_name(), so callers can determine which namespace
    the gateway device lives in.  This can then be over-ridden
    in the DVR Edge router class.
    
    The Prefix Delegation code will also now listen on the
    update_router event from the l3-agent and reset the namespace
    name if it changes.
    
    Closes-Bug: #1541406
    Change-Id: If6ada5027d0483fac7fc3ff935fee1edfc6e2759


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

Title:
  IPv6 prefix delegation does not work with DVR

Status in neutron:
  Fix Released

Bug description:
  Using a recent single-node devstack install, I tried to enable IPv6
  prefix delegation following the exact instructions in the advanced
  networking guide - http://docs.openstack.org/liberty/networking-
  guide/adv_config_ipv6.html

  $ neutron net-create ipv6-pd
  $ neutron subnet-create ipv6-pd --name ipv6-pd-1 --ip_version 6 --ipv6_ra_mode slaac --ipv6_address_mode slaac
  $ neutron router-interface-add ...

  The l3-agent threw an exception:

  2016-02-02 10:28:07.014 23328 DEBUG neutron.agent.linux.utils [-] Running command (rootwrap daemon): ['ip', 'netns', 'exec', 'qrouter-f932415c-2cbd-4bcf-a54e-d7f7ee890908', 'ip', '-6', 'addr', 'add', 'fe80::f816:3eff:fe79:188c/64', 'scope', 'link', 'dev', 'qg-e4629b84-e8'] execute_rootwrap_daemon /opt/stack/neutron/neutron/agent/linux/utils.py:100
  2016-02-02 10:28:07.068 23328 ERROR neutron.agent.linux.utils [-] Exit code: 1; Stdin: ; Stdout: ; Stderr: Cannot find device "qg-e4629b84-e8"

  2016-02-02 10:28:07.069 23328 DEBUG oslo_concurrency.lockutils [-] Lock "l3-agent-pd" released by "neutron.agent.linux.pd.enable_subnet" :: held 0.055s inner /usr/local/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:282
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info [-] Exit code: 1; Stdin: ; Stdout: ; Stderr: Cannot find device "qg-e4629b84-e8"
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info Traceback (most recent call last):
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info   File "/opt/stack/neutron/neutron/common/utils.py", line 368, in call
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info     return func(*args, **kwargs)
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 736, in process
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info     self._process_internal_ports(agent.pd)
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 388, in _process_internal_ports
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info     interface_name, p['mac_address'])
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info   File "/usr/local/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py", line 271, in inner
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info     return f(*args, **kwargs)
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info   File "/opt/stack/neutron/neutron/agent/linux/pd.py", line 81, in enable_subnet
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info     self._add_lla(router, pd_info.get_bind_lla_with_mask())
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info   File "/opt/stack/neutron/neutron/agent/linux/pd.py", line 196, in _add_lla
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info     'link')
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info   File "/opt/stack/neutron/neutron/agent/linux/interface.py", line 194, in add_ipv6_addr
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info     device.addr.add(str(net), scope)
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info   File "/opt/stack/neutron/neutron/agent/linux/ip_lib.py", line 532, in add
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info     self._as_root([net.version], tuple(args))
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info   File "/opt/stack/neutron/neutron/agent/linux/ip_lib.py", line 322, in _as_root
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info     use_root_namespace=use_root_namespace)
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info   File "/opt/stack/neutron/neutron/agent/linux/ip_lib.py", line 95, in _as_root
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info     log_fail_as_error=self.log_fail_as_error)
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info   File "/opt/stack/neutron/neutron/agent/linux/ip_lib.py", line 104, in _execute
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info     log_fail_as_error=log_fail_as_error)
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info   File "/opt/stack/neutron/neutron/agent/linux/utils.py", line 140, in execute
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info     raise RuntimeError(msg)
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info RuntimeError: Exit code: 1; Stdin: ; Stdout: ; Stderr: Cannot find device "qg-e4629b84-e8"
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info
  2016-02-02 10:28:07.069 23328 ERROR neutron.agent.l3.router_info
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent [-] Failed to process compatible router 'f932415c-2cbd-4bcf-a54e-d7f7ee890908'
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent Traceback (most recent call last):
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/agent.py", line 497, in _process_router_update
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     self._process_router_if_compatible(router)
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/agent.py", line 436, in _process_router_if_compatible
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     self._process_updated_router(router)
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/agent.py", line 450, in _process_updated_router
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     ri.process(self)
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/dvr_local_router.py", line 460, in process
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     super(DvrLocalRouter, self).process(agent)
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/dvr_router_base.py", line 30, in process
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     super(DvrRouterBase, self).process(agent)
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/common/utils.py", line 371, in call
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     self.logger(e)
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 204, in __exit__
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     six.reraise(self.type_, self.value, self.tb)
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/common/utils.py", line 368, in call
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     return func(*args, **kwargs)
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 736, in process
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     self._process_internal_ports(agent.pd)
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 388, in _process_internal_ports
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     interface_name, p['mac_address'])
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/usr/local/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py", line 271, in inner
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     return f(*args, **kwargs)
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/linux/pd.py", line 81, in enable_subnet
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     self._add_lla(router, pd_info.get_bind_lla_with_mask())
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/linux/pd.py", line 196, in _add_lla
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     'link')
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/linux/interface.py", line 194, in add_ipv6_addr
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     device.addr.add(str(net), scope)
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/linux/ip_lib.py", line 532, in add
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     self._as_root([net.version], tuple(args))
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/linux/ip_lib.py", line 322, in _as_root
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     use_root_namespace=use_root_namespace)
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/linux/ip_lib.py", line 95, in _as_root
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     log_fail_as_error=self.log_fail_as_error)
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/linux/ip_lib.py", line 104, in _execute
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     log_fail_as_error=log_fail_as_error)
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/linux/utils.py", line 140, in execute
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent     raise RuntimeError(msg)
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent RuntimeError: Exit code: 1; Stdin: ; Stdout: ; Stderr: Cannot find device "qg-e4629b84-e8"
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent
  2016-02-02 10:28:07.075 23328 ERROR neutron.agent.l3.agent

  That interface, qg-e4629b84-e8, lives in the SNAT namespace on a
  network node in dvr_snat mode.

  Looking into it.

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


References