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 <[email protected]>
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

-- 
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

Reply via email to