From e9a1122b3bbb9e58cb25aaa744fa6f8ca42e10fd Mon Sep 17 00:00:00 2001 From: Daniel Alvarez Date: Thu, 21 Dec 2017 13:03:16 +0100 Subject: [PATCH] Add support for DVR in OVN based environments This patch adds the ability to configure DVR in networking-ovn setups. Depends-On: I565a5b9918eaf9df1d315c653f76dc4136953ca9 Change-Id: I14d3411f62b411010ea4bd270746436fe3e3cd3a Signed-off-by: Daniel Alvarez --- environments/neutron-ml2-ovn-dvr-ha.yaml | 27 +++++++++++++++++++ environments/neutron-ml2-ovn-dvr.yaml | 26 ++++++++++++++++++ .../services-docker/neutron-ovn-dvr-ha.yaml | 26 ++++++++++++++++++ .../services-docker/neutron-ovn-dvr.yaml | 26 ++++++++++++++++++ puppet/services/neutron-plugin-ml2-ovn.yaml | 5 ++++ 5 files changed, 110 insertions(+) create mode 100644 environments/neutron-ml2-ovn-dvr-ha.yaml create mode 100644 environments/neutron-ml2-ovn-dvr.yaml create mode 100644 environments/services-docker/neutron-ovn-dvr-ha.yaml create mode 100644 environments/services-docker/neutron-ovn-dvr.yaml diff --git a/environments/neutron-ml2-ovn-dvr-ha.yaml b/environments/neutron-ml2-ovn-dvr-ha.yaml new file mode 100644 index 0000000000..c21ba3c89f --- /dev/null +++ b/environments/neutron-ml2-ovn-dvr-ha.yaml @@ -0,0 +1,27 @@ +# A Heat environment file which can be used to enable OVN +# extensions, configured via puppet +resource_registry: + OS::TripleO::Services::NeutronCorePlugin: OS::TripleO::Services::NeutronCorePluginML2OVN + OS::TripleO::Services::OVNController: ../puppet/services/ovn-controller.yaml + OS::TripleO::Services::OVNDBs: ../puppet/services/pacemaker/ovn-dbs.yaml +# Disabling Neutron services that overlap with OVN + OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None + OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None + OS::TripleO::Services::NeutronL3Agent: OS::Heat::None + OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None + OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None + OS::TripleO::Services::ComputeNeutronCorePlugin: OS::Heat::None + +parameter_defaults: + NeutronMechanismDrivers: ovn + OVNVifType: ovs + OVNNeutronSyncMode: log + OVNQosDriver: ovn-qos + OVNTunnelEncapType: geneve + NeutronEnableDHCPAgent: false + NeutronTypeDrivers: 'geneve,vlan,flat' + NeutronNetworkType: 'geneve' + NeutronServicePlugins: 'qos,ovn-router,trunk' + NeutronVniRanges: ['1:65536', ] + NeutronEnableDVR: true + diff --git a/environments/neutron-ml2-ovn-dvr.yaml b/environments/neutron-ml2-ovn-dvr.yaml new file mode 100644 index 0000000000..076d66d770 --- /dev/null +++ b/environments/neutron-ml2-ovn-dvr.yaml @@ -0,0 +1,26 @@ +# A Heat environment file which can be used to enable OVN +# extensions, configured via puppet +resource_registry: + OS::TripleO::Services::NeutronCorePlugin: OS::TripleO::Services::NeutronCorePluginML2OVN + OS::TripleO::Services::OVNController: ../puppet/services/ovn-controller.yaml + OS::TripleO::Services::OVNDBs: ../puppet/services/ovn-dbs.yaml +# Disabling Neutron services that overlap with OVN + OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None + OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None + OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None + OS::TripleO::Services::NeutronL3Agent: OS::Heat::None + OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None + OS::TripleO::Services::ComputeNeutronCorePlugin: OS::Heat::None + +parameter_defaults: + NeutronMechanismDrivers: ovn + OVNVifType: ovs + OVNNeutronSyncMode: log + OVNQosDriver: ovn-qos + OVNTunnelEncapType: geneve + NeutronEnableDHCPAgent: false + NeutronTypeDrivers: 'geneve,vlan,flat' + NeutronNetworkType: 'geneve' + NeutronServicePlugins: 'qos,ovn-router,trunk' + NeutronVniRanges: ['1:65536', ] + NeutronEnableDVR: true diff --git a/environments/services-docker/neutron-ovn-dvr-ha.yaml b/environments/services-docker/neutron-ovn-dvr-ha.yaml new file mode 100644 index 0000000000..5feeb68c36 --- /dev/null +++ b/environments/services-docker/neutron-ovn-dvr-ha.yaml @@ -0,0 +1,26 @@ +# A Heat environment that can be used to deploy OVN services with non HA OVN DB servers. +resource_registry: + OS::TripleO::Docker::NeutronMl2PluginBase: ../../puppet/services/neutron-plugin-ml2-ovn.yaml + OS::TripleO::Services::OVNController: ../../docker/services/ovn-controller.yaml + OS::TripleO::Services::OVNDBs: ../../docker/services/pacemaker/ovn-dbs.yaml +# Disabling Neutron services that overlap with OVN + OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None + OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None + OS::TripleO::Services::NeutronL3Agent: OS::Heat::None + OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None + OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None + OS::TripleO::Services::ComputeNeutronCorePlugin: OS::Heat::None + + +parameter_defaults: + NeutronMechanismDrivers: ovn + OVNVifType: ovs + OVNNeutronSyncMode: log + OVNQosDriver: ovn-qos + OVNTunnelEncapType: geneve + NeutronEnableDHCPAgent: false + NeutronTypeDrivers: 'geneve,vlan,flat' + NeutronNetworkType: 'geneve' + NeutronServicePlugins: 'qos,ovn-router,trunk' + NeutronVniRanges: ['1:65536', ] + NeutronEnableDVR: true diff --git a/environments/services-docker/neutron-ovn-dvr.yaml b/environments/services-docker/neutron-ovn-dvr.yaml new file mode 100644 index 0000000000..39bb03258d --- /dev/null +++ b/environments/services-docker/neutron-ovn-dvr.yaml @@ -0,0 +1,26 @@ +# A Heat environment that can be used to deploy OVN services with non HA OVN DB servers. +resource_registry: + OS::TripleO::Docker::NeutronMl2PluginBase: ../../puppet/services/neutron-plugin-ml2-ovn.yaml + OS::TripleO::Services::OVNController: ../../docker/services/ovn-controller.yaml + OS::TripleO::Services::OVNDBs: ../../docker/services/ovn-dbs.yaml +# Disabling Neutron services that overlap with OVN + OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None + OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None + OS::TripleO::Services::NeutronL3Agent: OS::Heat::None + OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None + OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None + OS::TripleO::Services::ComputeNeutronCorePlugin: OS::Heat::None + + +parameter_defaults: + NeutronMechanismDrivers: ovn + OVNVifType: ovs + OVNNeutronSyncMode: log + OVNQosDriver: ovn-qos + OVNTunnelEncapType: geneve + NeutronEnableDHCPAgent: false + NeutronTypeDrivers: 'geneve,vlan,flat' + NeutronNetworkType: 'geneve' + NeutronServicePlugins: 'qos,ovn-router,trunk' + NeutronVniRanges: ['1:65536', ] + NeutronEnableDVR: true diff --git a/puppet/services/neutron-plugin-ml2-ovn.yaml b/puppet/services/neutron-plugin-ml2-ovn.yaml index 45a2164f88..1c80d0d5a6 100644 --- a/puppet/services/neutron-plugin-ml2-ovn.yaml +++ b/puppet/services/neutron-plugin-ml2-ovn.yaml @@ -63,6 +63,10 @@ parameters: description: Geneve encapsulation header size type: number default: 38 + NeutronEnableDVR: + description: Enable Neutron DVR. + default: false + type: boolean resources: @@ -91,5 +95,6 @@ outputs: neutron::plugins::ml2::ovn::vif_type: {get_param: OVNVifType} neutron::server::qos_notification_drivers: {get_param: OVNQosDriver} neutron::plugins::ml2::max_header_size: {get_param: NeutronGeneveMaxHeaderSize} + neutron::plugins::ml2::ovn::dvr_enabled: {get_param: NeutronEnableDVR} step_config: | include ::tripleo::profile::base::neutron::plugins::ml2