From 882db8abab1b9b4b2b677a89a077cf5a7a10973f Mon Sep 17 00:00:00 2001 From: Justas Poderys Date: Mon, 26 Sep 2022 14:41:27 +0200 Subject: [PATCH] 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 --- ...t-napatech-linkvirtualization-smartnic.rst | 201 ++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 specs/2023.2/approved/support-napatech-linkvirtualization-smartnic.rst diff --git a/specs/2023.2/approved/support-napatech-linkvirtualization-smartnic.rst b/specs/2023.2/approved/support-napatech-linkvirtualization-smartnic.rst new file mode 100644 index 000000000..4ea12495e --- /dev/null +++ b/specs/2023.2/approved/support-napatech-linkvirtualization-smartnic.rst @@ -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