For OVS-DPDK bonding, we need DPDK options to run before os-net-config

Bug #1654975 reported by Sanjay Upadhyay
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
tripleo
Fix Released
Medium
Saravanan KR

Bug Description

Further to bug:1643026, we realize that for the OVS-DPDK bonding to work, we need to run the DPDK options before the os-net-config. The DPDK options are being set in step 4 for now, as this is puppet configuring the OVS with DPDK options.

So the crux of the problem lies in - https://github.com/openstack/os-net-config/blob/9971eb3af988b1f7c003048af161489ab79b1b0c/os_net_config/impl_ifcfg.py#L286-L288

Here, the Bonding options are being tried before the ovs-dpdk options are being set. This ovs-dpdk options are being set in step 4 via the puppet module https://github.com/openstack/puppet-vswitch/blob/master/manifests/dpdk.pp#L84-L92

Tags: networking
Sanjay Upadhyay (saneax)
Changed in tripleo:
status: New → Confirmed
Changed in tripleo:
importance: Undecided → Medium
milestone: none → ocata-3
Changed in tripleo:
status: Confirmed → Triaged
Saravanan KR (skramaja)
Changed in tripleo:
assignee: nobody → Saravanan KR (skramaja)
Revision history for this message
Brent Eagles (beagles) wrote :

Can this be resolved by modifying tripleo::profile::base::neutron::ovs.pp to include something like:

if $step >= 2 { # or 3 or whatever...
   include ::vswitch
}

Revision history for this message
Brent Eagles (beagles) wrote :

(if dpdk is enabled of course ;))

Changed in tripleo:
milestone: ocata-3 → pike-1
Revision history for this message
Sanjay Upadhyay (saneax) wrote :

Hi Brent -

The problem we are facing is os-net-config is trying to up a ovs-dpdk nic, however the openvswitch configs which are being changed is via puppet and at stage 4 of the installation. Since dpdk options are not quite there in the ovs configs, the ifcfg-nic up scripts fails to bring the ovs-dpdk nic up and bonding fails on top of it.

Now os_net_config runs before step 0, which would mean anything we run at step0 would also not solve the current issue. The workaround that @skramaja is working upstream is to run puppet before os-net-config is quite a long pole to cross. For now, we want at least in ocata to fix this problem of installer hanging if one chooses bonding over a ovs-dpdk bond.

Revision history for this message
Saravanan KR (skramaja) wrote :

DPDK in OVS needs to enabled before running os-net-config, for 2 purposes:
1) Ping Test on AllNodesValidation to succeed
2) Choosing the primary slave in the OVS DPDK Bond (running ovs-appctl bond/set-active-slave command on os-net-config)

But even if we enable DPDK before os-net-config, OVS cannot identify the dpdk ports dynamically in OVS2.5 and OVS2.6. Hot plug support is available in OVS2.7 onwards. Till then after adding the dpdk port (binding the DPDK driver), openvswitch needs to be restarted in os-net-config. And this restart should be done before ifup calls.

Currently we are in OVS2.5 version, we are evaluating OVS2.6 version, which *will* be the defacto for all OSP version. There are some changes in the way that DPDK_OPTIONS are read from /etc/sysconfig/openvswitch file. We are still analyzing it. Once we have clarity, the solution for this bug will be concluded.

Changed in tripleo:
milestone: pike-1 → pike-2
Changed in tripleo:
milestone: pike-2 → pike-3
Changed in tripleo:
status: Triaged → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to tripleo-heat-templates (master)

Reviewed: https://review.openstack.org/467490
Committed: https://git.openstack.org/cgit/openstack/tripleo-heat-templates/commit/?id=4e19c7a13e4717082f676ec5e72d35e9ea963a33
Submitter: Jenkins
Branch: master

commit 4e19c7a13e4717082f676ec5e72d35e9ea963a33
Author: Saravanan KR <email address hidden>
Date: Wed May 24 11:28:37 2017 +0530

    Enable DPDK on boot using PreNetworkConfig

    DPDK has to be enabled on openvswitch on the boot before
    configuring the network as when the network uses DPDK ports
    OvS should be ready to handle DPDK. Enabled DPDK via
    PreNetworkConfig by checking if ServiceNames contains
    DPDK service.
    Implements: blueprint ovs-2-6-dpdk
    Closes-Bug: #1654975

    Depends-On: I83a540336c01a696780621fb2b39486a6abf0917
    Change-Id: I7af4534d91e67c94ba559b78b9ac6a001e639db3

Changed in tripleo:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/tripleo-heat-templates 7.0.0.0b3

This issue was fixed in the openstack/tripleo-heat-templates 7.0.0.0b3 development milestone.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.