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
882db8abab
|
@ -0,0 +1,201 @@
|
|||
..
|
||||
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 spec proposes to update the Nova and
|
||||
Neutron 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 vif type `OVS` attribute `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 `os_vif OVSPlugin code`__.
|
||||
|
||||
.. __: https://encr.pw/uSQfn
|
||||
|
||||
Appropriate methods `plug()` and `unplug()` should be extended with
|
||||
ability to plug VF if vif has `VIFPortProfileOVSRepresentor` port profile for
|
||||
``VIFVHostUser``.
|
||||
|
||||
* `_plug_vf()` method should be extended with formula `VF_NUM=ID*8+VF` to
|
||||
calculate VF number based on the input PCI slot.
|
||||
|
||||
* `update_device_mtu()` method will be extended with `OVS_DPDK_INTERFACE_TYPE`
|
||||
interface support to have ability update MTU configuration for port on the
|
||||
OVS layer.
|
||||
|
||||
* We propose Unit/Functional tests pertinent to the proposed changes.
|
||||
|
||||
* The NT200A02 and NT50B01 with Link-Virtualization™ software will provide
|
||||
support of the hardware-based solution for full Open vSwitch (OVS) offload.
|
||||
|
||||
|
||||
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
|
||||
----------
|
||||
|
||||
* Extend Openvswitch driver with Virtio-Forwarder VIF type support
|
||||
* Add Virtio-Forwarder VIF type for Qos support
|
||||
* Add new OVS datapath port type ``dpdk``
|
||||
* Add ability to set MTU for dpdk representor potr type
|
||||
* Add ability to plug vf with ``VIFPortProfileOVSRepresentor`` vif profile
|
||||
for ``VIFVHostUser``
|
||||
* Add/Update Unit and Functional tests
|
||||
|
||||
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 or 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