When attempting to run dual stacked networking at the gate (https://review.openstack.org/#/c/140128/), IPv4 networking breaks, with Tempest scenarios reporting no route to host errors for the floating IPs that tempest attempts to SSH into.
The following errors are reported in the l3 agent log:
2014-12-11 23:19:58.393 25977 ERROR neutron.agent.l3.agent [-] Ignoring multiple IPs on router port db0953d3-4bd1-4106-9efc-c16cd9a3e922
2014-12-11 23:19:58.393 25977 ERROR neutron.agent.l3.agent [-] 'subnet'
2014-12-11 23:19:58.393 25977 TRACE neutron.agent.l3.agent Traceback (most recent call last):
2014-12-11 23:19:58.393 25977 TRACE neutron.agent.l3.agent File "/opt/stack/new/neutron/neutron/common/utils.py", line 341, in call
2014-12-11 23:19:58.393 25977 TRACE neutron.agent.l3.agent return func(*args, **kwargs)
2014-12-11 23:19:58.393 25977 TRACE neutron.agent.l3.agent File "/opt/stack/new/neutron/neutron/agent/l3/agent.py", line 646, in process_router
2014-12-11 23:19:58.393 25977 TRACE neutron.agent.l3.agent self._set_subnet_info(ex_gw_port)
2014-12-11 23:19:58.393 25977 TRACE neutron.agent.l3.agent File "/opt/stack/new/neutron/neutron/agent/l3/agent.py", line 562, in _set_subnet_info
2014-12-11 23:19:58.393 25977 TRACE neutron.agent.l3.agent prefixlen = netaddr.IPNetwork(port['subnet']['cidr']).prefixlen
2014-12-11 23:19:58.393 25977 TRACE neutron.agent.l3.agent KeyError: 'subnet'
2014-12-11 23:19:58.393 25977 TRACE neutron.agent.l3.agent
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/eventlet/greenpool.py", line 82, in _spawn_n_impl
func(*args, **kwargs)
File "/opt/stack/new/neutron/neutron/agent/l3/agent.py", line 1537, in _process_router_update
self._process_router_if_compatible(router)
File "/opt/stack/new/neutron/neutron/agent/l3/agent.py", line 1512, in _process_router_if_compatible
self.process_router(ri)
File "/opt/stack/new/neutron/neutron/common/utils.py", line 344, in call
self.logger(e)
File "/usr/local/lib/python2.7/dist-packages/oslo/utils/excutils.py", line 82, in __exit__
six.reraise(self.type_, self.value, self.tb)
File "/opt/stack/new/neutron/neutron/common/utils.py", line 341, in call
return func(*args, **kwargs)
File "/opt/stack/new/neutron/neutron/agent/l3/agent.py", line 646, in process_router
self._set_subnet_info(ex_gw_port)
File "/opt/stack/new/neutron/neutron/agent/l3/agent.py", line 562, in _set_subnet_info
prefixlen = netaddr.IPNetwork(port['subnet']['cidr']).prefixlen
KeyError: 'subnet'
http://logs.openstack.org/28/140128/4/check/check-tempest-dsvm-neutron-full/440ec4e/logs/screen-q-l3.txt.gz
Tempest reports no route to host:
2014-12-11 22:57:04.385 30680 WARNING tempest.common.ssh [-] Failed to establish authenticated ssh connection to cirros@172.24.4.82 ([Errno 113] No route to host). Number attempts: 1. Retry after 2 seconds.
http://logs.openstack.org/28/140128/4/check/check-tempest-dsvm-neutron-full/440ec4e/logs/tempest.txt.gz
Today I was evaluating dual stack on the Juno release. I can confirm the same issue.
My setup is one external network with two subnets (one v4 and one v6). If I set the gateway for the router with the UUID of the external network I see the same trace above mentioned in my l3_agent.log
It seems that the L3 agent is not capable to deal with two subnets configured for an external network.