On IPv6 overlay networks linuxbridge vxlans are created always on loopback device
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Fix Released
|
High
|
Tamas Gergely Peter |
Bug Description
Neutron looks up for vxlan parent devices by IFA_LABEL attribute returned from pyroute2.
If I set up IPv4 overlay network, this works without issues.
But when I setup an IPv6 overlay, always the device with index 0 (usually "lo") is being returned by get_devices_with_ip because the device structure returned for IPv6 addresses doesn't contain IFA_LABEL.
If IFA_LABEL is not found, neutron ip_lib.py tries to find the name of the 'owner' of the address by device index (index is already known here):
for ip_address in ip_addresses:
index = ip_address['index']
name = get_attr(
if not name:
device = get_devices_
if not device:
name = device[0]['name']
However priviliged/
My solution is now to transform get_link_devices() to pass arguments to ip.get_links() correctly:
--- ip_lib.py.orig 2021-12-03 10:28:40.312266929 +0000
+++ ip_lib.py 2021-12-03 10:26:33.337486559 +0000
@@ -564,7 +564,10 @@
"""
try:
with get_iproute(
- return make_serializab
+ if "index" in kwargs:
+ return make_serializab
+ else:
+ return make_serializab
except OSError as e:
if e.errno == errno.ENOENT:
raise NetworkNamespac
tags: | added: ipv6 linuxbridge |
Changed in neutron: | |
assignee: | nobody → Tamas Gergely Peter (tamasgp) |
Thanks for the bug report and the detailed analysis.