Update StarlingX OpenStack support to Open vSwitch (OvS)

Storyboard: https://storyboard.openstack.org/#!/story/2011263

The objective of this feature is to enabled complete Open vSwitch (OvS) support by the StarlingX OpenStack application. The virtual switch option will be configurable and will cover both options: OvS Kernel (already supported) and OvS-DPDK (support to be reestablished).

Problem description

Since the transition from CentOS to Debian distro, there is no option to select OvS-DPDK as the StarlingX OpenStack application virtual switch. Currently, only the OvS Kernel (containerized) is supported.

This feature proposes to reestablish the support of OvS-DPDK in two steps:

  • Phase 1: Reestablish the StarlingX host support to OvS-DPDK, ensuring the sysinv and puppet code can identify when the service needs to be configured and activated. The platform will be responsible for managing and monitoring the service. Neutron agents will communicate with the host based service. Neutron supports using Open vSwitch + DPDK vhost-user interfaces directly in the OVS ML2 driver and agent.

  • Phase 2: Containerize OvS-DPDK, decoupling it from the StarlingX Platform code and ensuring that all DPDK features are available from within a containerized OvS-DPDK solution.

Use Cases

Open Vswitch is designed for multi-server virtualization deployments, particularly when the built-in Layer 2 switch (Linux Bridge) is not well suited. It addresses highly dynamic end-points, logical abstractions and integration with or offloading to special purpose switching hardware.

  • Deployers: Deployer will have access to a multilayer software switch platform that supports standard management interfaces, opens the forwarding functions to programmatic extension and control, including (optionally) accelerated datapath.

  • End Users: End users benefit form a virtual switch within OpenStack VM environments that supports distribution across multiple compute nodes and (optionally) acceleration with DPDK datapath and DPDK-backed vhost-user virtual interfaces.

Proposed change

Phase 1

  • Re-integrate the OvS-DPDK debian package(s) build as part of the StarlingX build, making such package(s) available as part of the platform ISO.

  • Update the stx-puppet code and its module dependencies to properly configure and control the OvS-DPDK deployment and configuration.

  • Update system inventory code to trigger puppet logic when the option vswitch_type=ovs-dpdk is configured for a StarlingX deployment.

  • Update the stx-openstack plugins to identify based on host labels which virtual switch was selected for the deployment: openvswitch=enabled, for OvS Kernel (containerized), when vswitch_type=none is configured; openvswitch=enabled,dpdk=enabled, for OvS-DPDK running in the compute host (StarlingX platform), when vswitch_type=ovs-dpdk is configured;

Phase 2

  • Containerize the OvS-DPDK deployment, providing a proper stx-debian based Docker image to be used along with the OpenStack Helm “openvswitch” chart.

  • Update the stx-openstack plugins to proper configure/deploy the openvswitch when OvS-DPDK is the selected virtual switch option.

  • Deprecate the StarlingX platform configuration “vswtich_type”, making the stx-openstack code select the virtual switch based only on compute host labels.

  • Remove the OvS-DPDK packages, including puppet modules, from StarlingX host.

Alternatives

  • There is currently no alternative to deploy OpenStack infrastructure with accelerated datapath capabilities for the virtual network.

Data model impact

  • CPU and Memory HugePages with the vswitch function will be used for OvS-DPDK StarlingX deployments.

REST API impact

None

Security impact

  • 3rd party packages added to the StarlingX ISO (OvS-DPDK and puppet module)

  • The containerized OvS-DPDK solution will map StarlingX CPU Cores with the “vswitch” function set, as well as HugePages mapped for vswitch.

Other end user impact

  • For OvS-DPDK deployments, user will have to configure platform resources (CPU and Memory HugePages) with the vswitch function;

Phase 1

  • User will have to select the OvS option by combining both the StarlingX platform configuration “vswitch_type=<none|ovs-dpdk>” and the compute node(s) labels: openvswitch=enabled, for OvS Kernel (containerized); openvswitch=enabled,dpdk=enabled, for OvS-DPDK running in the compute host.

  • User choice of OvS option is a global/system level configuration. That is, only homogeneous configuration of openvswitch across all compute nodes. So, user will not be allowed to mix ovs-kernel and ovs-dpdk for different compute nodes in same openstack cloud.

Phase 2

  • User will select the OvS option by setting only the compute node(s) labels: openvswitch=enabled, for OvS Kernel (containerized); openvswitch=enabled,dpdk=enabled, for OvS-DPDK running in the compute host.

Performance Impact

  • Enhanced data-network performance on the OpenStack virtualized infrastructure with accelerated datapath, when OvS-DPDK is deployed.

Other deployer impact

Please see the “Use Cases” section.

Developer impact

None

Upgrade impact

  • App upgrade The feature will be implemented as part of the StarlingX OpenStack optional platform app. Upgrade of the app will be supported the same way as other apps.

  • System upgrade The handling of the app for system upgrade will be the same as existing apps.

Implementation

Assignee(s)

Primary assignee:

Other Contributors:

Repos Impacted

  • starlingx/root

  • starlingx/tools

  • starlingx/integ

  • starlingx/stx-puppet

  • starlingx/config

  • starlingx/openstack-armada-app

Work Items

The following work items are expected, with the understanding that the storyboard will be updated as more work items are found to be necessary.

Spikes and Design

Phase 1

  • Explore the OvS-DPDK deployment on StarlingX, covering the proper configuration requirements (eg., puppet, system inventory).

  • Explore the Neutron OvS Agent configuration required to support OvS-DPDK.

Phase 2

  • Explore the OpenStack Helm openvswitch chart values and templates, identifing how to properly configure the OvS-DPDK containerized deployment.

Development Work Items

Phase 1

  • Update the puppet code and libraries/dependencies to properly deploy OvS-DPDK on Debian (StarlingX).

  • Update the system inventory to properly identify and mark ethernet interfaces compatible with the current DPDK PMD drivers.

  • Update StarlingX OpenStack plugins to properly understand the virtual switch selection based on compute host labels and configure Neutron agent accordingly.

Phase 2

  • Update StarlingX OpenStack to properly select and deploy the openvswitch chart, on both the OvS (Kernel) and the OvS-DPDK modes.

  • Clean up StarlingX platform packages and code related to OvS-DPDK deployment.

Customer Documentation

  • Publish the usage guide for both available virtual switch options and how to configure and make use of it for StarlingX deployments.

Dependencies

None.

Testing

System configuration

The tests will be conducted in the following system configurations:

  • AIO-SX

  • AIO-DX

  • Standard

  • Distributed Cloud: OpenStack Sub-Cloud

Test Scenarios

  • Functional Neutron agent integration with both OvS deployments.

  • OpenStack virtual network deployment with VMs connected to internal and external networks, with vNICs properly attached to OvS.

  • Network traffic load and performance KPIs, with VMs connected to OvS.

Documentation Impact

The end-user documentation must be created, adding a guide to StarlingX OpenStack - Open vSwitch options exploring the configuration, management and deployment of virtual switch for the OpenStack virtual infrastructure.

References

  1. Open vSwitch Documentation

  2. Why Open vSwitch?

  3. Using Open vSwitch with DPDK

  4. Open vSwitch with DPDK Datapath

  5. OpenStack Helm’s Open vSwitch Chart

  6. Neutron Open vSwitch vhost-user Support

History

Revisions

Release Name

Description

stx-11.0

Introduced