Public bug reported:
Scenario: Having BGP peers defined for IPv6 to advertise tenant
networks, like for a standard deployment with public IPv6 connectivity.
When a router has both IPv4 and IPv6 subnets attached, updates like
adding a new IPv6 subnet also create updates for the IPv4 prefixes, but
these crash the peering:
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: netaddr.core.AddrFormatError:
base address '2001:db8::308' is not IPv4
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: During handling of the above
exception, another exception occurred:
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: Traceback (most recent call
last):
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/lib/hub.py", line 69, in _launch
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: return func(*args,
**kwargs)
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/services/protocols/bgp/base.py",
line 253, in start
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: self._run(*args, **kwargs)
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/services/protocols/bgp/peer.py",
line 683, in _run
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]:
self._process_outgoing_msg_list()
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/services/protocols/bgp/peer.py",
line 769, in _process_outgoing_msg_list
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]:
self._send_outgoing_route(outgoing_msg)
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/services/protocols/bgp/peer.py",
line 729, in _send_outgoing_route
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]:
self._protocol.send(update_msg)
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/services/protocols/bgp/speaker.py",
line 395, in send
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: self._send_with_lock(msg)
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/services/protocols/bgp/speaker.py",
line 384, in _send_with_lock
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]:
self._socket.sendall(msg.serialize())
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/lib/packet/bgp.py", line 5245,
in serialize
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: tail =
self.serialize_tail()
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/lib/packet/bgp.py", line 5465,
in serialize_tail
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: binpathattrs +=
pa.serialize()
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/lib/packet/bgp.py", line 3661,
in serialize
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: value =
self.serialize_value()
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/lib/packet/bgp.py", line 3871,
in serialize_value
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]:
addrconv.ipv4.text_to_bin(self.value))
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/lib/addrconv.py", line 36, in
text_to_bin
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: ip = self._fallback(text,
**self._addr_kwargs)
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/netaddr/ip/__init__.py", line 930, in
__init__
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: value, prefixlen =
parse_ip_network(_ipv4, addr,
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/netaddr/ip/__init__.py", line 803, in
parse_ip_network
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: expanded_addr =
_ipv4.expand_partial_address(val1)
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/netaddr/strategy/ipv4.py", line 259,
in expand_partial_address
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: raise error
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: netaddr.core.AddrFormatError:
invalid partial IPv4 address: '2001:db8::308'!
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: :
netaddr.core.AddrFormatError: invalid partial IPv4 address: '2001:db8::308'!
Full logs attached.
** Affects: neutron
Importance: Undecided
Assignee: Dr. Jens Harbott (j-harbott)
Status: New
** Tags: l3-bgp
** Tags added: l3-bgp
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/2023632
Title:
n-d-r: Peering failing on mixed IPv4 + IPv6 updates
Status in neutron:
New
Bug description:
Scenario: Having BGP peers defined for IPv6 to advertise tenant
networks, like for a standard deployment with public IPv6
connectivity. When a router has both IPv4 and IPv6 subnets attached,
updates like adding a new IPv6 subnet also create updates for the IPv4
prefixes, but these crash the peering:
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]:
netaddr.core.AddrFormatError: base address '2001:db8::308' is not IPv4
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: During handling of the
above exception, another exception occurred:
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: Traceback (most recent call
last):
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/lib/hub.py", line 69, in _launch
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: return func(*args,
**kwargs)
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/services/protocols/bgp/base.py",
line 253, in start
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: self._run(*args,
**kwargs)
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/services/protocols/bgp/peer.py",
line 683, in _run
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]:
self._process_outgoing_msg_list()
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/services/protocols/bgp/peer.py",
line 769, in _process_outgoing_msg_list
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]:
self._send_outgoing_route(outgoing_msg)
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/services/protocols/bgp/peer.py",
line 729, in _send_outgoing_route
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]:
self._protocol.send(update_msg)
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/services/protocols/bgp/speaker.py",
line 395, in send
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]:
self._send_with_lock(msg)
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/services/protocols/bgp/speaker.py",
line 384, in _send_with_lock
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]:
self._socket.sendall(msg.serialize())
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/lib/packet/bgp.py", line 5245,
in serialize
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: tail =
self.serialize_tail()
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/lib/packet/bgp.py", line 5465,
in serialize_tail
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: binpathattrs +=
pa.serialize()
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/lib/packet/bgp.py", line 3661,
in serialize
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: value =
self.serialize_value()
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/lib/packet/bgp.py", line 3871,
in serialize_value
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]:
addrconv.ipv4.text_to_bin(self.value))
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/os_ken/lib/addrconv.py", line 36, in
text_to_bin
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: ip =
self._fallback(text, **self._addr_kwargs)
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/netaddr/ip/__init__.py", line 930, in
__init__
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: value, prefixlen =
parse_ip_network(_ipv4, addr,
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/netaddr/ip/__init__.py", line 803, in
parse_ip_network
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: expanded_addr =
_ipv4.expand_partial_address(val1)
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: File
"/usr/local/lib/python3.10/dist-packages/netaddr/strategy/ipv4.py", line 259,
in expand_partial_address
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: raise error
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]:
netaddr.core.AddrFormatError: invalid partial IPv4 address: '2001:db8::308'!
Jun 13 08:06:03 vm2 neutron-bgp-dragent[3280003]: :
netaddr.core.AddrFormatError: invalid partial IPv4 address: '2001:db8::308'!
Full logs attached.
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/2023632/+subscriptions
--
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help : https://help.launchpad.net/ListHelp