##################### Neutron Configuration ##################### Neutron, the network service for OpenStack, supports a variety of configurations to optimize and tailor network performance. This includes integrating hardware acceleration technologies to enhance networking capabilities within your OpenStack environment. ********************* Hardware Acceleration ********************* Hardware acceleration can significantly improve network performance by offloading specific network functions to directly to the network interface card (NIC). This reduces the load on the host CPU and improves network throughput and latency. ML2/OVS ======= Mellanox Accelerated Switching And Packet Processing (ASAP\ :sup:`2`) --------------------------------------------------------------------- Mellanox ASAP\ :sup:`2` is a technology that enables the offloading of the Open vSwitch datapath to the NIC. This offloading is done by the NIC's firmware, and is transparent to the host. Atmosphere uses the `netoffload `_ project which takes care of validating and preparing the host for SR-IOV. It is recommended to follow the ``netoffload`` `BIOS, Kernel & NIC configuration `_ steps documented before getting started. Open vSwitch configuration ^^^^^^^^^^^^^^^^^^^^^^^^^^ In order to enable hardware off-loading in Open vSwitch, you must make sure that you deploy with the following configuration: .. code-block:: yaml openvswitch_helm_values: conf: ovs_hw_offload: enabled: true Neutron configuration ^^^^^^^^^^^^^^^^^^^^^ In order to enable hardware off-loading in Neutron, you can simply deploy it with the following configuration and it will use `netoffload `_ to automatically configure ASAP\ :sup:`2`. .. admonition:: About ``Init`` errors :class: info If you see an Init error when deploying Neutron, you may need to look at the logs of the ``netoffload`` container to see what went wrong. .. code-block:: yaml neutron_helm_values: conf: netoffload: asap2: - dev: enp97s0f0 vfs: 16 ML2/OVN ======= DPDK for provider & tenant networks ----------------------------------- DPDK is a set of libraries and drivers for fast packet processing. It is designed to run mostly in userspace, and can be used to accelerate network functions in OpenStack. DPDK can be used with OVN to accelerate the processing of packets in the datapath. This can be done by enabling the DPDK support in the OVN configuration. Open vSwitch configuration ^^^^^^^^^^^^^^^^^^^^^^^^^^ In order to enable hardware off-loading in Open vSwitch, you must make sure that you deploy with the following configuration: .. code-block:: yaml openvswitch_helm_values: conf: ovs_dpdk: enabled: true socket_memory: 2048 hugepages_mountpath: /dev/hugepages vhostuser_socket_dir: vhostuser lcore_mask: 0x1 driver: mlx5_core vhost_iommu_support: true For more details about configuring `socket_memory`, `lcore_mask`, and `driver` parameters, please refer to the `OpenvSwitch documentation `_. OVN configuration ^^^^^^^^^^^^^^^^^ In order to enable hardware off-loading in OVN, you must make sure that you deploy with the following configuration: .. code-block:: yaml ovn_helm_values: network: interface: tunnel: br-ex tunnel_network_cidr: 192.168.0.0/19 conf: ovn_bridge_mappings: external:br-ex ovn_bridge_datapath_type: netdev Neutron configuration ^^^^^^^^^^^^^^^^^^^^^ In order to enable hardware off-loading in Neutron, you can simply deploy it with the following configuration and it will take care of creating the DPDK interfaces for you. .. code-block:: yaml neutron_helm_values: conf: neutron: DEFAULT: global_physnet_mtu: 9100 plugins: ml2_conf: ml2: path_mtu: 9100 physical_network_mtus: external:9100 ml2_type_vxlan: vni_ranges: 2000:1000000 ovs_dpdk: enabled: true update_dpdk_bond_config: true driver: mlx5_core bonds: - name: dpdkbond bridge: br-ex migrate_ip: true mtu: 9100 n_rxq: 2 n_txq: 2 n_rxq_size: 2048 n_txq_size: 2048 vhost_iommu_support: true ovs_options: 'bond_mode=balance-tcp lacp=active bond_updelay=10 bond_downdelay=10 other_config:lacp-time=fast' nics: - name: dpdk_b0s0 pci_id: '0000:c1:00.0' - name: dpdk_b0s1 pci_id: '0000:c1:00.1' modules: - name: dpdk log_level: info nics: null Flavor configuration ^^^^^^^^^^^^^^^^^^^^ In order to use DPDK with OVN, you must create a flavor that supports DPDKw which also includes making changes for the services that use the service virtual machine model such as Octavia and Manila. .. code-block:: yaml nova_flavors: - disk: 1 name: m1.tiny ram: 512 vcpus: 1 extra_specs: "hw:vif_multiqueue_enabled": 'true' "hw:mem_page_size": 'large' - disk: 20 name: m1.small ram: 2048 vcpus: 1 extra_specs: "hw:vif_multiqueue_enabled": 'true' "hw:mem_page_size": 'large' manila_flavor_extra_specs: "hw:vif_multiqueue_enabled": 'true' "hw:mem_page_size": large octavia_amphora_flavor_extra_specs: "hw:vif_multiqueue_enabled": 'true' "hw:mem_page_size": large