From 27b3eacd3da074b884ca8b4642c8d4a724c2653b Mon Sep 17 00:00:00 2001 From: Rodolfo Alonso Date: Fri, 24 Mar 2023 15:49:04 +0000 Subject: [PATCH] Revert "Ensure vlan network traffic is not centralized" This reverts commit 8e3bddbf8bc5296143357d3df7fd27aeb9bb9bd9. Reason for revert: As part of the reverted commit, the redirect-type=bridged flag was enabled by default. However this have the side effect of also decentralizing N/S traffic for geneve tenant networks, breaking the VM connectivity on them when it must be centralized, i.e., when no FIPs are associated to the VMs. A new fix will be provided ASAP. Change-Id: I30b1328b30f1b36b8b7ee556aa52ac6b2dd91d4e --- neutron/common/ovn/constants.py | 2 -- .../drivers/ovn/mech_driver/ovsdb/maintenance.py | 5 ++++- .../drivers/ovn/mech_driver/ovsdb/ovn_client.py | 16 ++++------------ .../notes/bug-2003455-dff0d0f00b5a18e2.yaml | 9 --------- 4 files changed, 8 insertions(+), 24 deletions(-) delete mode 100644 releasenotes/notes/bug-2003455-dff0d0f00b5a18e2.yaml diff --git a/neutron/common/ovn/constants.py b/neutron/common/ovn/constants.py index 2a4afbf4a92..4b4d94ff243 100644 --- a/neutron/common/ovn/constants.py +++ b/neutron/common/ovn/constants.py @@ -393,8 +393,6 @@ LSP_OPTIONS_MCAST_FLOOD = 'mcast_flood' LSP_OPTIONS_QOS_MIN_RATE = 'qos_min_rate' LRP_OPTIONS_RESIDE_REDIR_CH = 'reside-on-redirect-chassis' -LRP_OPTIONS_REDIRECT_TYPE = 'redirect-type' -BRIDGE_REDIRECT_TYPE = "bridged" # Port Binding types PB_TYPE_VIRTUAL = 'virtual' diff --git a/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py b/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py index c1870af96c3..7e427e272a2 100644 --- a/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py +++ b/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py @@ -725,7 +725,10 @@ class DBInconsistenciesPeriodics(SchemaAwarePeriodicsBase): # Get router ports belonging to VLAN networks vlan_nets = self._ovn_client._plugin.get_networks( context, {pnet.NETWORK_TYPE: [n_const.TYPE_VLAN]}) - vlan_net_ids = [vn['id'] for vn in vlan_nets] + # FIXME(ltomasbo): Once Bugzilla 2162756 is fixed the + # is_provider_network check should be removed + vlan_net_ids = [vn['id'] for vn in vlan_nets + if not utils.is_provider_network(vn)] router_ports = self._ovn_client._plugin.get_ports( context, {'network_id': vlan_net_ids, 'device_owner': n_const.ROUTER_PORT_OWNERS}) diff --git a/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py b/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py index 96b7b61360c..1aa80f58cbd 100644 --- a/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py +++ b/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py @@ -1573,29 +1573,21 @@ class OVNClient(object): if network is None: network = self._plugin.get_network(admin_context, port['network_id']) - # For VLAN type networks we need to set the # "reside-on-redirect-chassis" option so the routing for this # logical router port is centralized in the chassis hosting the # distributed gateway port. # https://github.com/openvswitch/ovs/commit/85706c34d53d4810f54bec1de662392a3c06a996 + # FIXME(ltomasbo): Once Bugzilla 2162756 is fixed the + # is_provider_network check should be removed if network.get(pnet.NETWORK_TYPE) == const.TYPE_VLAN: options[ovn_const.LRP_OPTIONS_RESIDE_REDIR_CH] = ( - 'false' if ovn_conf.is_ovn_distributed_floating_ip() + 'false' if (ovn_conf.is_ovn_distributed_floating_ip() and + not utils.is_provider_network(network)) else 'true') is_gw_port = const.DEVICE_OWNER_ROUTER_GW == port.get( 'device_owner') - - # NOTE(ltomasbo): For VLAN type networks connected through the gateway - # port there is a need to set the redirect-type option to bridge to - # ensure traffic is not centralized through the controller. - # For geneve based tenant networks it won't have any effect as it only - # applies to network with a localnet associated to it - if is_gw_port and ovn_conf.is_ovn_distributed_floating_ip(): - options[ovn_const.LRP_OPTIONS_REDIRECT_TYPE] = ( - ovn_const.BRIDGE_REDIRECT_TYPE) - if is_gw_port and ovn_conf.is_ovn_emit_need_to_frag_enabled(): try: router_ports = self._get_router_ports(admin_context, diff --git a/releasenotes/notes/bug-2003455-dff0d0f00b5a18e2.yaml b/releasenotes/notes/bug-2003455-dff0d0f00b5a18e2.yaml deleted file mode 100644 index c17fe4338da..00000000000 --- a/releasenotes/notes/bug-2003455-dff0d0f00b5a18e2.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -fixes: - - | - [`bug 2003455 `_] - Previous commit (https://review.opendev.org/c/openstack/neutron/+/871252) - added a workaround to avoid vlan provider networks traffic to be tunneled - to the compute nodes but it was still centralized. Now the traffic is - distributed thanks to using the "redirect-type" flag on the ovn gateway - port.