...
Task name | Description | Airship component | Implementation | Upstream reference |
---|---|---|---|---|
create openvswitch agent chart | create helm chart for openvswitch agent | openstack-helm | in place and being deployed when OVS is enabled | |
create ovs-dpdk chart | create helm chart for openvswitch dpdk container | openstack-helm | Extend existing openvswitch chart with config parameters for DPDK. | https://review.openstack.org/#/c/626894/ |
deploy neutron openvswitch agent | ensure chart of openvswitch agent is deployed | treasuremap | In place and being deployed when OVS is enabled | |
DPDK host config: enable 1G hugepages | modify kernel cmdline to enable 1G hugepages (hugepagez=1G hugepages=8 iommu=pt intel_iommu=on ) | drydock | Already available: Define the number of available hugepages in the node's HardwareProfile: Define the kernel paramters for enabling hgepages in the node's BaremetalNode configuration (kernel_param section): | https://storyboard.openstack.org/#!/story/2004790 |
DPDK host config: mount hugepages | mount hugepages into local file system on system boot (hardcoded mount point) | Divingbell | Two alternatives available:
Issue: does not allow fine-grained control of mount-options (e.g. specify the size of the hugepages if there are multiple available)
| https://storyboard.openstack.org/#!/story/2004790 |
DPDK host config: make hugepage mount point a config option | make mount point config option for e.g. use by helm charts | openstack-helm | config option of helm chart (see patchset). Need to figure out how to pass overrides to chart. | https://review.openstack.org/#/c/626894/ |
specify PCI IDs of NICs for use by DPDK | specify in site config which PCI IDs (NICs) should be decided to DPDK | Add parameters to OVS helm chart | ||
DPDK host config: install DPDK kernel modules and tools on host OS | either install host OS dpdk package or build from source | drydock or divingbell | depends on DPDK driver we want to use: igb_uio, uio_generic_pci or vfio-pci. Only for igb_uio a custum built kernel module is needed. | |
DPDK host config: load DPDK kernel module in host OS | load dpdk kernel modules uio and igb_uio during host boot-up | drydock or divingbell | extend existing openvswitch-vswitchd init container | https://review.openstack.org/#/c/626894/ |
DPDK host config: bind NICs to DPDK | use dpdk-devbind to bind specified NICs to DPDK | drydock or divingbell | look into re-using and/or adapting a tool used by kolla-ansible https://github.com/openstack/kolla-ansible/blob/master/tools/ovs-dpdkctl.sh | |
ensure communication between OVS agent and OVS | ensure common socket configuration | openstack-helm | already in place | |
adapt OVS bridge configuration for OVS setup | Work items:
| openstack-helm | look into re-using and/or adapting a tool used by kolla-ansible https://github.com/openstack/kolla-ansible/blob/master/tools/ovs-dpdkctl.sh | https://review.openstack.org/#/c/626894/ |
adapt Neutron (ovs-agent) configuration | Adapt neutron.conf and ml2 plugin config | openstack-helm | extend ml2 plugin configuration of neutron in openstack-helm | https://review.openstack.org/#/c/643284/ |
adapt IP address assignment to OVS DPDK bridge | make sure that correct IPs get assigned to the OVS bridges running DPDK | openstack-helm | ||
create docker image with dpdk-enabled OVS | update the image build scripts of openstack-helm to include DPDK in the OVS image | openstack-helm-images | openstack-helm-image repo: https://github.com/openstack/openstack-helm-images/tree/master/openvswitch Alternatives (kept just for reference) Kolla images: https://hub.docker.com/r/kolla/ubuntu-binary-ovsdpdk/ or https://hub.docker.com/r/kolla/ubuntu-source-ovsdpdk/ | https://review.openstack.org/#/c/650152/ |
update site configuration to deploy ovs-dpdk | create a site configuration which actually deploys ovs-dpdk as data plane | treasuremap | enable openvswitch chart group | https://review.openstack.org/#/c/634207/ |
Legend:
done / available |
ongoing |
blocking |
...