yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #83353
[Bug 1871608] Re: [OVN] Cannot create metadata port for segmented network
Reviewed: https://review.opendev.org/720464
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=8d1512afb07a9a77958c44f2e7f5d47865c8a475
Submitter: Zuul
Branch: master
commit 8d1512afb07a9a77958c44f2e7f5d47865c8a475
Author: Maciej Józefczyk <mjozefcz@xxxxxxxxxx>
Date: Thu Apr 16 12:58:15 2020 +0000
[OVN] Allow IP allocation with different segments for OVN service ports
OVN creates localport [1] for each network that has metadata
and allocate IP address from subnet within this network that has
DHCP enabled. The traffic from this port will never go outside
the chassis.
While using multiple segments with subnet linked to each segment
OVN needs to create an allocation of IP address for each of those
subnets [2] in order to generate data for OVN NBDB IPv4 DHCP Options.
The change [3] started to validate that condition, while multiple
IP addresses from different segments are tried to be allocated on
one port. We can skip this for OVN Metadata port, because there
is no reason to prevent those kind of allocation for OVN.
[1] http://www.openvswitch.org/support/dist-docs/ovn-architecture.7.html
[2] https://github.com/openstack/neutron/blob/5f42488a9a6a7a3afa55a56f53e2f5ef09365115/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py#L2279
[3] https://review.opendev.org/#/c/709444/
Change-Id: Ib51cde89ed873f48db4daebc27a0980da9cc0f19
Closes-Bug: 1871608
** 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/1871608
Title:
[OVN] Cannot create metadata port for segmented network
Status in neutron:
Fix Released
Bug description:
While following instructions for Routed Provided Networks [1] and
using OVN Neutron raises error during creation on second segment
subnet:
==== How to reproduce ===
sudo iniset /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_vlan network_vlan_ranges segment-1:100:102,segment-2:200:202
sudo systemctl restart devstack@q-svc
openstack network create --share --provider-physical-network segment-1 --provider-network-type vlan --provider-segment 100 public-multisegment
openstack network segment set --name segment-1 $(openstack network segment list --network public-multisegment -c ID -f value)
openstack network segment create --physical-network segment-2 --network-type vlan --segment 200 --network public-multisegment segment-2
openstack subnet create --network public-multisegment --network-segment segment-1 --ip-version 4 --subnet-range 172.24.4.0/24 --allocation-pool start=172.24.4.100,end=172.24.4.200 public-multisegment-segment-1-v4
openstack subnet create --network public-multisegment --network-segment segment-2 --ip-version 4 --subnet-range 172.24.6.0/24 --allocation-pool start=172.24.6.100,end=172.24.6.200 public-multisegment-segment-2-v4
EXCEPTION RAISED ON LAST COMMAND:
Apr 08 11:23:35 central neutron-server[10871]: DEBUG neutron_lib.callbacks.manager [None req-e975c78f-bb1d-449d-9517-0a9386733b13 demo admin] Notify callbacks ['neutron.plugins.ml2.plugin.SecurityGroupDbMixin._ensure_default_security_group
_handler--9223372036853431474'] for port, before_update {{(pid=10878) _notify_loop /usr/local/lib/python3.6/dist-packages/neutron_lib/callbacks/manager.py:193}}
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers [None req-e975c78f-bb1d-449d-9517-0a9386733b13 demo admin] Mechanism driver 'ovn' failed in create_subnet_postcommit: neutron.services.segments.exceptions.Fi
xedIpsSubnetsNotOnSameSegment: Cannot allocate addresses from different segments.
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers Traceback (most recent call last):
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/home/vagrant/neutron/neutron/plugins/ml2/managers.py", line 477, in _call_on_drivers
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers getattr(driver.obj, method_name)(context)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/home/vagrant/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py", line 441, in create_subnet_postcommit
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers context.network.current)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/home/vagrant/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py", line 2165, in create_subnet
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers if subnet['enable_dhcp']:
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/home/vagrant/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py", line 2356, in update_metadata_port
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers metadata_port['id'], port)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/home/vagrant/neutron/neutron/common/utils.py", line 685, in inner
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers return f(self, context, *args, **kwargs)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/neutron_lib/db/api.py", line 233, in wrapped
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers return method(*args, **kwargs)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/neutron_lib/db/api.py", line 139, in wrapped
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers setattr(e, '_RETRY_EXCEEDED', True)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers self.force_reraise()
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers six.reraise(self.type_, self.value, self.tb)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/six.py", line 703, in reraise
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers raise value
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/neutron_lib/db/api.py", line 135, in wrapped
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers return f(*args, **kwargs)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/oslo_db/api.py", line 154, in wrapper
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers ectxt.value = e.inner_exc
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers self.force_reraise()
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers six.reraise(self.type_, self.value, self.tb)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/six.py", line 703, in reraise
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers raise value
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/oslo_db/api.py", line 142, in wrapper
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers return f(*args, **kwargs)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/neutron_lib/db/api.py", line 183, in wrapped
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers LOG.debug("Retry wrapper got retriable exception: %s", e)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers self.force_reraise()
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers six.reraise(self.type_, self.value, self.tb)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/six.py", line 703, in reraise Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers raise value
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/neutron_lib/db/api.py", line 179, in wrapped Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers return f(*dup_args, **dup_kwargs)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/home/vagrant/neutron/neutron/plugins/ml2/plugin.py", line 1652, in update_port Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers port)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/usr/local/lib/python3.6/dist-packages/neutron_lib/db/api.py", line 233, in wrapped Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers return method(*args, **kwargs)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/home/vagrant/neutron/neutron/db/db_base_plugin_v2.py", line 1503, in update_port Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers new_port=new_port)
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/home/vagrant/neutron/neutron/db/ipam_backend_mixin.py", line 703, in update_port Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers new_port.get('mac_address'))
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/home/vagrant/neutron/neutron/db/ipam_pluggable_backend.py", line 428, in update_port_with_ips
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers new_mac) Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/home/vagrant/neutron/neutron/db/ipam_pluggable_backend.py", line 351, in _update_ips_for_port
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers fixed_ips=changes.add + changes.original) Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/home/vagrant/neutron/neutron/db/ipam_backend_mixin.py", line 657, in _ipam_get_subnets
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers fixed_ips) Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/home/vagrant/neutron/neutron/objects/subnet.py", line 338, in find_candidate_subnets
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers query, fixed_ips).all() Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers File "/home/vagrant/neutron/neutron/objects/subnet.py", line 394, in _query_filter_by_fixed_ips_segment
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers raise segment_exc.FixedIpsSubnetsNotOnSameSegment() Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers neutron.services.segments.exceptions.FixedIpsSubnetsNotOnSameSegment: Cannot allocate addresses from different segments.
Apr 08 11:23:35 central neutron-server[10871]: ERROR neutron.plugins.ml2.managers
Client error:
BadRequestException: 400: Client Error for url: http://192.168.121.158:9696/v2.0/subnets, Cannot allocate addresses from different segments.
Looks like we need to fix segment handling for metadata ports [2].
[1] https://docs.openstack.org/ocata/networking-guide/config-routed-networks.html
[2] https://github.com/openstack/neutron/blob/805bd1210e2286c02e59b2462ec6470ec81155b0/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py#L2127
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1871608/+subscriptions
References