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:
parent
3a80f8a42f
commit
a95069d093
|
@ -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
|
Loading…
Reference in New Issue