Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Task nameDescriptionAirship componentImplementationUpstream reference
create openvswitch agent chartcreate helm chart for openvswitch agentopenstack-helmin place and being deployed when OVS is enabled
create ovs-dpdk chartcreate helm chart for openvswitch dpdk containeropenstack-helmExtend existing openvswitch chart with config parameters for DPDK.https://review.openstack.org/#/c/626894/
deploy neutron openvswitch agentensure chart of openvswitch agent is deployedtreasuremapIn place and being deployed when OVS is enabled
DPDK host config: enable 1G hugepagesmodify 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:
https://github.com/openstack/airship-drydock/blob/master/python/tests/yaml_samples/deckhand_fullsite.yaml#L427

Define the kernel paramters for enabling hgepages in the node's BaremetalNode configuration (kernel_param section):
https://github.com/openstack/airship-drydock/blob/master/python/tests/yaml_samples/deckhand_fullsite.yaml#L366

https://storyboard.openstack.org/#!/story/2004790
DPDK host config: mount hugepagesmount hugepages into local file system on system boot (hardcoded mount point)Divingbell

Two alternatives available:

  • utilize auto-mount capabilities of Ubuntu

https://www.apt-browse.org/browse/ubuntu/xenial/main/i386/systemd/229-4ubuntu4/file/lib/systemd/system/dev-hugepages.mount

Issue: does not allow fine-grained control of mount-options (e.g. specify the size of the hugepages if there are multiple available)

  • Deploy Divingbell daemonset on compute nodes with a given chart configuration (values.yaml).

https://airship-divingbell.readthedocs.io/en/latest/#mounts

https://storyboard.openstack.org/#!/story/2004790
DPDK host config: make hugepage mount point a config optionmake mount point config option for e.g. use by helm chartsopenstack-helmconfig 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 DPDKspecify in site config which PCI IDs (NICs) should be decided to DPDK 
Add parameters to OVS helm chart

https://review.openstack.org/#/c/626894/

DPDK host config: install DPDK kernel modules and tools on host OSeither install host OS dpdk package or build from sourcedrydock or divingbelldepends 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.

https://review.openstack.org/#/c/626894/

DPDK host config: load DPDK kernel module in host OSload dpdk kernel modules uio and igb_uio during host boot-updrydock or divingbellextend existing openvswitch-vswitchd init containerhttps://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

https://review.openstack.org/#/c/626894/

DPDK host config: enable hugepage support for kubeletenable hugepage support for k8s kubelet via feature-gate optionpromenadehugepages is a beta feature since K8s 1.10 and enabled by default.https://storyboard.openstack.org/#!/story/2004791
ensure communication between OVS agent and OVSensure common socket configurationopenstack-helmalready in place
adapt OVS bridge configuration for OVS setup

Work items:

  • create bridges with datatpath type netdev
  • add physical interface to physical bridge (br-phy)
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) configurationAdapt neutron.conf and ml2 plugin configopenstack-helmextend ml2 plugin configuration of neutron in openstack-helmhttps://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.

Every dpdk bridge needs a separate IP address for the tunnel endpoints.

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 nova and neutron images with newer version of OVSOVS in current images is outdatedopenstack-helm-images
https://review.opendev.org/#/c/651060/
update site configuration to deploy ovs-dpdkcreate a site configuration which actually deploys ovs-dpdk as data planetreasuremapenable openvswitch chart grouphttps://review.openstack.org/#/c/634207/
add LAG support to DPDK configurationconfigure LAG support on DPDK NICs in OVSopenstack-helm

...