There is a startup-ordering issue between openvswitch.service and the generated opennebula-ovs.service.
The generated service contains:
After=openvswitch.service network-pre.target
Requires=openvswitch.service
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/opennebula-ovs.sh
However, openvswitch.service starts ovs-vswitchd.service, while the PCI driver binding required by the DPDK interfaces is performed inside opennebula-ovs.sh.
As a result, ovs-vswitchd starts before the physical interfaces have been prepared for DPDK.
Relevant one-deploy files:
roles/openvswitch/templates/opennebula-ovs.service.jinja
roles/openvswitch/templates/opennebula-ovs.sh.jinja
Observed behavior
The affected host uses two physical interfaces in an OVS-DPDK bond:
0000:17:00.0 → vmnic0
0000:ca:00.0 → vmnic6
During boot, ovs-vswitchd repeatedly attempted to attach the interfaces before they were bound to vfio-pci:
EAL: Driver cannot attach the device (0000:17:00.0)
EAL: Driver cannot attach the device (0000:ca:00.0)
EAL: Failed to attach device on primary process
netdev_dpdk|WARN|Error attaching device
The one-deploy networking script subsequently executed the PCI binding operations, after which both interfaces eventually attached successfully.
Expected behavior
The PCI devices required by OVS-DPDK should be prepared before ovs-vswitchd attempts to initialize them.
Actual behavior
OVS starts first and attempts to initialize PCI devices that have not yet been bound to the required driver.
The interfaces eventually recovered in our validation, but this introduces avoidable startup errors and a dependency on DPDK retry behavior.
Progress Status
There is a startup-ordering issue between openvswitch.service and the generated opennebula-ovs.service.
The generated service contains:
However, openvswitch.service starts ovs-vswitchd.service, while the PCI driver binding required by the DPDK interfaces is performed inside opennebula-ovs.sh.
As a result, ovs-vswitchd starts before the physical interfaces have been prepared for DPDK.
Relevant one-deploy files:
Observed behavior
The affected host uses two physical interfaces in an OVS-DPDK bond:
0000:17:00.0 → vmnic0
0000:ca:00.0 → vmnic6
During boot, ovs-vswitchd repeatedly attempted to attach the interfaces before they were bound to vfio-pci:
The one-deploy networking script subsequently executed the PCI binding operations, after which both interfaces eventually attached successfully.
Expected behavior
The PCI devices required by OVS-DPDK should be prepared before ovs-vswitchd attempts to initialize them.
Actual behavior
OVS starts first and attempts to initialize PCI devices that have not yet been bound to the required driver.
The interfaces eventually recovered in our validation, but this introduces avoidable startup errors and a dependency on DPDK retry behavior.
Progress Status