From f3f1437cb23cc24d1d34cf61ffe27779ff688dc7 Mon Sep 17 00:00:00 2001 From: Moshe Levi Date: Tue, 26 Sep 2017 11:04:10 +0300 Subject: [PATCH] Add ovs hardware Offload support to ovs mechansim driver Depends-On: I3c0d24a31f0a1cac2cb8c5da8125051d4348eed6 Depends-On I578f956f2a8c6ee29a9d1ff38ee51765bcab05c1 Implements: blueprint tripleo-ovs-hw-offload Change-Id: I7e20ab2111e7d71380da844a15835b5fac1125d9 --- environments/neutron-ovs-hw-offload.yaml | 24 +++++++++++++++++++ puppet/services/neutron-ovs-agent.yaml | 7 ++++++ .../ovs-hw-offload-a6bf0fa9c39a8204.yaml | 6 +++++ 3 files changed, 37 insertions(+) create mode 100644 environments/neutron-ovs-hw-offload.yaml create mode 100644 releasenotes/notes/ovs-hw-offload-a6bf0fa9c39a8204.yaml diff --git a/environments/neutron-ovs-hw-offload.yaml b/environments/neutron-ovs-hw-offload.yaml new file mode 100644 index 0000000000..42aa4f5318 --- /dev/null +++ b/environments/neutron-ovs-hw-offload.yaml @@ -0,0 +1,24 @@ +# A Heat environment file that enables OVS Hardware Offload in the overcloud. +# This works by configuring SR-IOV NIC with switchdev and OVS Hardware Offload on +# compute nodes. The feature supported in OVS 2.8.0 + +resource_registry: + OS::TripleO::Services::NeutronSriovHostConfig: ../puppet/services/neutron-sriov-host-config.yaml + +parameter_defaults: + + NovaSchedulerDefaultFilters: ['RetryFilter','AvailabilityZoneFilter','RamFilter','ComputeFilter','ComputeCapabilitiesFilter','ImagePropertiesFilter','ServerGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter'] + NovaSchedulerAvailableFilters: ["nova.scheduler.filters.all_filters","nova.scheduler.filters.pci_passthrough_filter.PciPassthroughFilter"] + + # Kernel arguments for ComputeSriov node + ComputeSriovParameters: + KernelArgs: "intel_iommu=on iommu=pt" + OvsHwOffload: True + # Number of VFs that needs to be configured for a physical interface + #NeutronSriovNumVFs: ["ens3f0:4:switchdev"] + # Mapping of SR-IOV PF interface to neutron physical_network. + # In case of Vxlan/GRE physical_network should be null. + # In case of flat/vlan the physical_network should as configured in neutron. + #NovaPCIPassthrough: + # - devname: "ens3f0" + # physical_network: null diff --git a/puppet/services/neutron-ovs-agent.yaml b/puppet/services/neutron-ovs-agent.yaml index 79e6b3f61c..afbab36aa6 100644 --- a/puppet/services/neutron-ovs-agent.yaml +++ b/puppet/services/neutron-ovs-agent.yaml @@ -78,6 +78,11 @@ parameters: default: tag: openstack.neutron.agent.openvswitch path: /var/log/neutron/openvswitch-agent.log + OvsHwOffload: + default: false + description: | + Enable OVS Hardware Offload. This feature supported from OVS 2.8.0 + type: boolean conditions: no_firewall_driver: {equals : [{get_param: NeutronOVSFirewallDriver}, '']} @@ -111,9 +116,11 @@ resources: map_replace: - map_replace: - neutron::agents::ml2::ovs::bridge_mappings: NeutronBridgeMappings + vswitch::ovs::enable_hw_offload: OvsHwOffload - values: {get_param: [RoleParameters]} - values: NeutronBridgeMappings: {get_param: NeutronBridgeMappings} + OvsHwOffload: {get_param: OvsHwOffload} outputs: role_data: diff --git a/releasenotes/notes/ovs-hw-offload-a6bf0fa9c39a8204.yaml b/releasenotes/notes/ovs-hw-offload-a6bf0fa9c39a8204.yaml new file mode 100644 index 0000000000..597832b843 --- /dev/null +++ b/releasenotes/notes/ovs-hw-offload-a6bf0fa9c39a8204.yaml @@ -0,0 +1,6 @@ +--- +features: +- Add support for OVS Hardware Offload. + This feature requires Linux Kernel >= 4.13 + Open vSwitch >= 2.8 iproute >= 4.12. +