diff --git a/environments/neutron-ml2-ovn-hw-offload.yaml b/environments/neutron-ml2-ovn-hw-offload.yaml new file mode 100644 index 0000000000..831159fcd6 --- /dev/null +++ b/environments/neutron-ml2-ovn-hw-offload.yaml @@ -0,0 +1,40 @@ +# 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 + OS::TripleO::Services::NeutronSriovHostConfig: ../puppet/services/neutron-sriov-host-config.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', ] + NovaSchedulerDefaultFilters: ['RetryFilter','AvailabilityZoneFilter','RamFilter','ComputeFilter','ComputeCapabilitiesFilter','ImagePropertiesFilter','ServerGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter'] + NovaSchedulerAvailableFilters: ["nova.scheduler.filters.all_filters","nova.scheduler.filters.pci_passthrough_filter.PciPassthroughFilter"] + + ComputeSriovParameters: + KernelArgs: "intel_iommu=on iommu=pt" + OvsHwOffload: True + # Number of VFs that needs to be configured for a physical interface + #NeutronSriovNumVFs: ["enp2s0f0:4:switchdev"] + # Mapping of SR-IOV PF interface to neutron physical_network. + # In case of GENEVE physical_network should be null. + # In case of flat/vlan the physical_network should as configured in neutron. + #NovaPCIPassthrough: + # - devname: "enp2s0f0" + # physical_network: "datacentre" \ No newline at end of file diff --git a/puppet/services/ovn-controller.yaml b/puppet/services/ovn-controller.yaml index 18cb9665d2..3c996adf9d 100644 --- a/puppet/services/ovn-controller.yaml +++ b/puppet/services/ovn-controller.yaml @@ -61,7 +61,11 @@ parameters: description: The CMS options to configure in ovs db type: string default: "" - + OvsHwOffload: + default: false + description: | + Enable OVS Hardware Offload. This feature supported from OVS 2.8.0 + type: boolean resources: # Merging role-specific parameters (RoleParameters) with the default parameters. @@ -75,10 +79,12 @@ resources: - map_replace: - ovn::controller::ovn_bridge_mappings: NeutronBridgeMappings ovn::controller::ovn_cms_options: OVNCMSOptions + ovn::controller::enable_hw_offload: OvsHwOffload - values: {get_param: [RoleParameters]} - values: NeutronBridgeMappings: {get_param: NeutronBridgeMappings} OVNCMSOptions: {get_param: OVNCMSOptions} + OvsHwOffload: {get_param: OvsHwOffload} conditions: force_config_drive: {equals: [{get_param: OVNMetadataEnabled}, false]}