yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #87774
[Bug 1952897] [NEW] Cannot setup IPv6 overlay network in xena
Public bug reported:
After upgrading from pike to xena my IPv6 vxlan overlay networks with
linuxbridge stopped working.
In neutron-linuxbridge-agent.log on the compute nodes I see:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/agent/_common_agent.py", line 465, in daemon_loop
sync = self.process_network_devices(device_info)
File "/usr/local/lib/python3.8/dist-packages/osprofiler/profiler.py", line 160, in wrapper
result = f(*args, **kwargs)
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/agent/_common_agent.py", line 214, in process_network_devices
resync_a = self.treat_devices_added_updated(devices_added_updated)
File "/usr/local/lib/python3.8/dist-packages/osprofiler/profiler.py", line 160, in wrapper
result = f(*args, **kwargs)
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/agent/_common_agent.py", line 231, in treat_devices_added_updated
self._process_device_if_exists(device_details)
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/agent/_common_agent.py", line 256, in _process_device_if_exists
interface_plugged = self.mgr.plug_interface(
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py", line 582, in plug_interface
return self.add_tap_interface(network_id, network_segment.network_type,
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py", line 521, in add_tap_interface
return False
File "/usr/local/lib/python3.8/dist-packages/oslo_utils/excutils.py", line 227, in __exit__
self.force_reraise()
File "/usr/local/lib/python3.8/dist-packages/oslo_utils/excutils.py", line 200, in force_reraise
raise self.value
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py", line 511, in add_tap_interface
return self._add_tap_interface(network_id, network_type,
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py", line 542, in _add_tap_interface
elif not self.ensure_physical_in_bridge(network_id,
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py", line 485, in ensure_physical_in_bridge
return self.ensure_vxlan_bridge(network_id, segmentation_id, mtu)
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py", line 260, in ensure_vxlan_bridge
interface = self.ensure_vxlan(segmentation_id, mtu)
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py", line 356, in ensure_vxlan
int_vxlan = self.ip.add_vxlan(interface, segmentation_id,
File "/usr/lib/python3/dist-packages/neutron/agent/linux/ip_lib.py", line 303, in add_vxlan
privileged.create_interface(name, self.namespace, "vxlan", **kwargs)
File "/usr/local/lib/python3.8/dist-packages/oslo_privsep/priv_context.py", line 271, in _wrap
return self.channel.remote_call(name, args, kwargs,
File "/usr/local/lib/python3.8/dist-packages/oslo_privsep/daemon.py", line 216, in remote_call
raise exc_type(*result[2])
OSError: illegal IP address string passed to inet_pton
After some debugging I've found that xena uses pyroute2 module to create interfaces and it tries to parse the IPv6 vxlan_group and vxlan_local addresses with AF_INET address family, despite that the ml2_conf.ini contains "overlay_ip_version = 6".
If I apply the following modification to ip_lib.py, the issue
disappears, however I know that this is just working until I use IPv6
vxlan networks.
--- ip_lib.py.orig 2021-11-30 16:12:31.434975862 +0000
+++ ip_lib.py 2021-12-01 10:44:20.737971722 +0000
@@ -280,7 +280,7 @@
local=None, srcport=None, dstport=None, proxy=False):
kwargs = {'vxlan_id': vni}
if group:
- kwargs['vxlan_group'] = group
+ kwargs['vxlan_group6'] = group
if dev:
kwargs['physical_interface'] = dev
if ttl:
@@ -288,7 +288,7 @@
if tos:
kwargs['vxlan_tos'] = tos
if local:
- kwargs['vxlan_local'] = local
+ kwargs['vxlan_local6'] = local
if proxy:
kwargs['vxlan_proxy'] = proxy
# tuple: min,max
Is there any solution to use IPv6 overlay networks without issues?
** Affects: neutron
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1952897
Title:
Cannot setup IPv6 overlay network in xena
Status in neutron:
New
Bug description:
After upgrading from pike to xena my IPv6 vxlan overlay networks with
linuxbridge stopped working.
In neutron-linuxbridge-agent.log on the compute nodes I see:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/agent/_common_agent.py", line 465, in daemon_loop
sync = self.process_network_devices(device_info)
File "/usr/local/lib/python3.8/dist-packages/osprofiler/profiler.py", line 160, in wrapper
result = f(*args, **kwargs)
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/agent/_common_agent.py", line 214, in process_network_devices
resync_a = self.treat_devices_added_updated(devices_added_updated)
File "/usr/local/lib/python3.8/dist-packages/osprofiler/profiler.py", line 160, in wrapper
result = f(*args, **kwargs)
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/agent/_common_agent.py", line 231, in treat_devices_added_updated
self._process_device_if_exists(device_details)
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/agent/_common_agent.py", line 256, in _process_device_if_exists
interface_plugged = self.mgr.plug_interface(
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py", line 582, in plug_interface
return self.add_tap_interface(network_id, network_segment.network_type,
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py", line 521, in add_tap_interface
return False
File "/usr/local/lib/python3.8/dist-packages/oslo_utils/excutils.py", line 227, in __exit__
self.force_reraise()
File "/usr/local/lib/python3.8/dist-packages/oslo_utils/excutils.py", line 200, in force_reraise
raise self.value
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py", line 511, in add_tap_interface
return self._add_tap_interface(network_id, network_type,
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py", line 542, in _add_tap_interface
elif not self.ensure_physical_in_bridge(network_id,
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py", line 485, in ensure_physical_in_bridge
return self.ensure_vxlan_bridge(network_id, segmentation_id, mtu)
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py", line 260, in ensure_vxlan_bridge
interface = self.ensure_vxlan(segmentation_id, mtu)
File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py", line 356, in ensure_vxlan
int_vxlan = self.ip.add_vxlan(interface, segmentation_id,
File "/usr/lib/python3/dist-packages/neutron/agent/linux/ip_lib.py", line 303, in add_vxlan
privileged.create_interface(name, self.namespace, "vxlan", **kwargs)
File "/usr/local/lib/python3.8/dist-packages/oslo_privsep/priv_context.py", line 271, in _wrap
return self.channel.remote_call(name, args, kwargs,
File "/usr/local/lib/python3.8/dist-packages/oslo_privsep/daemon.py", line 216, in remote_call
raise exc_type(*result[2])
OSError: illegal IP address string passed to inet_pton
After some debugging I've found that xena uses pyroute2 module to create interfaces and it tries to parse the IPv6 vxlan_group and vxlan_local addresses with AF_INET address family, despite that the ml2_conf.ini contains "overlay_ip_version = 6".
If I apply the following modification to ip_lib.py, the issue
disappears, however I know that this is just working until I use IPv6
vxlan networks.
--- ip_lib.py.orig 2021-11-30 16:12:31.434975862 +0000
+++ ip_lib.py 2021-12-01 10:44:20.737971722 +0000
@@ -280,7 +280,7 @@
local=None, srcport=None, dstport=None, proxy=False):
kwargs = {'vxlan_id': vni}
if group:
- kwargs['vxlan_group'] = group
+ kwargs['vxlan_group6'] = group
if dev:
kwargs['physical_interface'] = dev
if ttl:
@@ -288,7 +288,7 @@
if tos:
kwargs['vxlan_tos'] = tos
if local:
- kwargs['vxlan_local'] = local
+ kwargs['vxlan_local6'] = local
if proxy:
kwargs['vxlan_proxy'] = proxy
# tuple: min,max
Is there any solution to use IPv6 overlay networks without issues?
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1952897/+subscriptions
Follow ups