diff --git a/doc/source/advanced_deployment/features.rst b/doc/source/advanced_deployment/features.rst index 930e9e13..a4e8d2df 100644 --- a/doc/source/advanced_deployment/features.rst +++ b/doc/source/advanced_deployment/features.rst @@ -15,3 +15,4 @@ Documentation on how to enable and configure various features available in ops_tools high_availability baremetal_overcloud + ovs_dpdk_config diff --git a/doc/source/advanced_deployment/ovs_dpdk_config.rst b/doc/source/advanced_deployment/ovs_dpdk_config.rst new file mode 100644 index 00000000..823dafa2 --- /dev/null +++ b/doc/source/advanced_deployment/ovs_dpdk_config.rst @@ -0,0 +1,81 @@ +Deploying with OVS DPDK Support +=============================== + +TripleO can deploy Overcloud nodes with OVS DPDK support. The following +changes are required: + - Environment File + - Parameters + - Network Config + +Environment File +---------------- +Deploy command should include the OVS DPDK environment file to override the +default neutron-ovs-agent service with neutron-ovs-dpdk-agent service. All the +required parameters are specified in this environment file as commented. The +parameters has to be configured according to the baremetal on which OVS DPDK +is enabled. + +Also, OVS-DPDK requires mandatory kernel parameters to be set before +configuring the DPDK driver, like ``intel_iommu=on`` on Intel machines. In +order to enable the configuration of kernel parametres to the host, host- +config-pre-network environment file has to be added for the deploy command. + +Adding the following arguments to the ``openstack overcloud deploy`` command +will do the trick:: + + -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-ovs-dpdk.yaml \ + -e /usr/share/openstack-tripleo-heat-templates/environments/host-config-pre-network.yaml \ + + +Parameters +---------- +The parameters ``NeutronDpdkCoreList`` and ``NeutronDpdkMemoryChannels`` are +mandatory for OVS-DPDK deployment. And other optional parameter to be +considered is ``NeutronDpdkSocketMemory``.:: + + NeutronDpdkCoreList: "'1,2,18,19'" + NeutronDpdkMemoryChannels: "4" + NeutronDpdkSocketMemory: "'1024,1024'" + + +The parameter ``ComputeKernelArgs`` should be provided in the deployment +environment file, with the set of kernel boot parameters to be applied on the +``Compute`` role where OVS DPDK is enabled:: + + ComputeKernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=64 intel_iommu=on" + +.. note:: + The parameter ``ComputeKernelArgs`` is specific to a role. In case of + introducing a new role like ``ComputeOvsDpdk``, the kernel args should be + given as ``ComputeOvsDpdkKernelArgs`` parameter. + +Network Config +-------------- +DPDK supported network interfaces should be specified in the network config +templates to configure OVS DPDK on the node. The following new network config +types have been added to support DPDK. + + - ovs_user_bridge + - ovs_dpdk_port + - ovs_dpdk_bond + +Example:: + + network_config: + - + type: ovs_user_bridge + name: br-link + use_dhcp: false + members: + - + type: ovs_dpdk_port + name: dpdk0 + members: + - + type: interface + name: nic3 + +By default, the interface will be bound to ``vfio-pci`` DPDK driver. In case +of binding to a diffrenet driver, network config types ``ovs_dpdk_port`` and +``ovs_dpdk_bond`` each take an additional parameter ``driver`` to specify the +driver name.