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