Add support for Napatech LinkVirt SmartNICs

Napatech LinkVirtualization SmartNICs offload network traffic switching, QoS, and tunnel encapsulation/decapsulation functions from the OVS running on the hypervisor to the on-board silicon. This patch updates the Nova source code to include support for a new VIF type corresponding to the virtual devices exposed by the LinkVirtualization SmartNIC.

Change-Id: I2df34bbf4031384e008cbc642ca15291501dfe53
This commit is contained in:
Justas Poderys 2022-09-26 14:41:27 +02:00 committed by Danylo Vodopianov
parent 3a80f8a42f
commit a95069d093
1 changed files with 186 additions and 0 deletions

View File

@ -0,0 +1,186 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
=============================================
Support Napatech LinkVirtualization SmartNICs
=============================================
https://blueprints.launchpad.net/nova/+spec/support-napatech-linkvirtualization-smartnic
Napatech LinkVirtualization SmartNICs offload network traffic switching, QoS,
and tunnel encapsulation/decapsulation functions from the OVS running on the
hypervisor to the on-board silicon. This patch updates the Nova source code to
include support for a new VIF type corresponding to the virtual devices exposed
by the LinkVirtualization SmartNIC.
Problem description
===================
Napatech SmartNICs can offload several computational resource intensive tasks
from the hypervisor, such as packet switching, QoS enforcement, and V(x)LAN
tunnel encapsulation/decapsulation. Upstream and Out of tree OVS
implementations can leverage these offloads when using dpdk via DPDK port
representors (https://docs.openvswitch.org/en/latest/topics/dpdk/phy/#representors).
Nova and os-vif currently support kernel-based VF representors, but not the
DPDK VF representors which leverage vhost-user socket. This spec seeks to
address this gap.
Use Cases
---------
* An end user of Napatech SmartNIC should be able to support Napatech SmartNICs
out-of-the-box.
* Other SmartNICs using OvS-DPDK representor ports should also work.
Proposed change
===============
* We propose to extend the OpenvSwitch driver with a new VNIC type
`VNIC_VIRTIO_FORWARDER` and the related VIF handling function
`nova_to_osvif_vif()`. A method which handles vhostuser VIF type should
handle the new VNIC type by setting an appropriate datapath, representor port
profile, vhostuser vif type, `OVS` plugin, and datapath offload settings.
OpenvSwitch driver should be able to set the DPDK representor socket path for
virtio-forwarder vnic type:
https://docs.openvswitch.org/en/latest/topics/dpdk/phy/#representors.
* We propose to extend `OVS_DPDK_PORT_TYPES` with a new port type `dpdk`.
* We propose to update the `OvsPlugin` class to support plug and unplug of OVS
DPDK representor ports.
* We propose unit-tests pertinent to the proposed changes.
Alternatives
------------
None
Data model impact
-----------------
None
REST API impact
---------------
None
Security impact
---------------
None
Notifications impact
--------------------
None
Other end user impact
---------------------
None
Performance Impact
------------------
Users will see a significant network performance increase when running over
the hardware offloaded data-plane compared kernel-ovs and traditional
vhost-user.
Other deployer impact
---------------------
In line with other SmartNIC offerings, the deployer will have to configure
OVS-DPDK following the SmartNIC producer guidelines and update the PCI
device_spec configuration.
https://docs.openstack.org/nova/latest/configuration/config.html#pci.device_spec
Developer impact
----------------
None
Upgrade impact
--------------
None
Implementation
==============
Assignee(s)
-----------
* Oleksii Butenko (obu-plv)
* Danylo Vodopianov (dvo-plv)
* Justas Poderys (justas_napa on IRC and Gerrit)
Feature Liaison
---------------
* Sean Mooney (sean-k-mooney)
Work Items
----------
* Nova change proposal:
https://review.opendev.org/c/openstack/nova/+/859577
* Os-vif change proposal:
https://review.opendev.org/c/openstack/os-vif/+/859574
* Neutron-lib change proposal:
https://review.opendev.org/c/openstack/neutron-lib/+/859573
* Neutron change proposal:
https://review.opendev.org/c/openstack/neutron/+/869510
Dependencies
============
* This blueprint is a prerequisite to update code in Neutron to support
LinkVirtualization SmartNICs. This is in-line with support of other
SmartNICs. Links to changes of all four components are given in the Work
Items section.
Testing
=======
* Code changes will require additional testing coverage:
New unit tests will be implented ot updated existing.
New functional tests will be implemented.
Napatech will provide third party ci for testing on the NT hardware.
Documentation Impact
====================
We are not introducing any new VNIC type, so there should be no impact on
documentation.
References
==========
* Napatech LinkVirtualization:
https://www.napatech.com/products/link-virtualization-software/
History
=======
.. list-table:: Revisions
:header-rows: 1
* - Release Name
- Description
* - 2023.2 Bobcat
- Introduced