NVIDIA BlueField-2 SNAP for NVMe and Virtio-blk v3.8.0
NVIDIA BlueField-2 SNAP for NVMe and Virtio-blk v3.8.0

Changes and New Features History Log

  • SNAP crash fixes

  • Fixed wrong pci_bdf "00:00.0"

Protocol

Feature

Description

Virtio-blk

Virtio-blk Transitional Device (0.95)

Added support for virtio transitional devices (i.e., devices supporting drivers conforming to modern specification and legacy drivers)

Virtio-blk

Virtio-blk Live Migration

Added support for live migration which allows system administrators to pass devices between virtual machines in a live running system

All

SNAP-Direct support for multipath SPDK bdev

Added SNAP-Direct support ("zero-copy") for SPDK bdevs which implement SPDK's multipath functionality. When enabled, this feature is supported for both active-passive and active-active modes.

All

SNAP-Direct support for LVOL/RAID SPDK bdev

Added SNAP-Direct support ("zero-copy") for SPDK bdevs which execute SPDK's logical volumes (LVOL) or RAID management

Protocol

Feature

Description

TCP XLIO

Bug fixes

N/A

Protocol

Feature

Description

NVMe

NVMe/TCP Zero Copy

Implemented as a custom NVDA_TCP transport in SPDK NVMe initiator. This feature is based on a new XLIO socket layer implementation. This feature is disabled by default.

Protocol

Feature

Description

NVMe

NVMe UEFI driver improvements

Optimized NVMe UEFI driver to complete operation faster so SNAP NVMe devices do not delay BIOS for a long period during boot time

All

New snap-direct implementation

Implemented snap-direct (or "zero-copy") functionality using non-NVIDIA-proprietary SPDK interface so it can now work over any supported SPDK framework (SPDK ≥ 21.07).

All

SNAP memory pool

Enabled sharing of memory buffers between all devices when working with multiple SNAP devices (e.g., SR-IOV) to dramatically improve scalability

Protocol

Feature

Description

All

Improved scalability for virtual functions (SR-IOV)

Added ability for user to configure a global buffer pool to be used by all (or some) controllers, which removes the memory boundary from creating a large number of controllers simultaneously (like in SR-IOV)

All

Improved hotplug/unplug behavior

Added ability for user to detach (hot-unplug) a PCIe function even when the host driver is still active (see "Working with PCIe Hotplug" for limitations)

NVMe

Support for NVMe 1.4 specification

Added support for all mandatory features in NVMe 1.4 specification. For now, 1.3 specification is still set as default for compatibility reasons.

NVMe

Unique subsystem NQN pre-BlueField

Added a default SNAP subsystem NQN which is unique (and persistent) per BlueField device

Protocol

Feature

Description

Virtio-blk

Robustness and Recovery

Added support for SNAP virtio-blk controllers to recover their state post-SNAP process termination and resume the existing communication channels with host drivers

Virtio-blk

Extended virtio-blk RPC support

Extended virtio-blk debug counters command outputs to include additional useful debug parameters, and added a new RPC command to show bdevs connected to a virtio-blk controller

All

Persistent PCIe hot-plug

Added ability to make SNAP hotplugged PCIe functions persistent across SNAP process terminations or even DPU (warm) reboots. Hotplug can also be performed while host is not even alive.

All

Performance optimizations

Extended the flows running in SNAP direct mode (virtio-blk, nvme sgls), and optimized performance for multiple controllers and poll-based (no interrupts) sqs

NVMe

Extended full offload support

Removed limitation for NVMe full-offload mode to be run only on P0

Protocol

Feature

Description

All

SNAP statistics

Added dedicated RPC command set to query SNAP controller and get performance and debug statistics

NVMe

NVMe hotplug

Added the option to dynamically attach (hotplug) additional NVMe physical functions to the host server

Protocol

Feature

Description

All

SR-IOV support

Added SR-IOV support for both NVMe and virtio-blk protocols. SR-IOV is now able to open 127 PCIe VFs per NVMe/virtio-blk PF configured on the system.

All

Windows support

Added full Windows support to SNAP

Virtio-blk

Static device support

Added support for virtio-blk static devices which can be configured in the firmware configuration stage

Virtio-blk

UEFI cold boot

Added support for performing UEFI cold boot from virtio-blk devices. This can be achieved by using virtio-blk static devices.

Virtio-blk

Online backend management

Added support for changing the backends for virtio-blk devices without the need to close the backend controller. Resizing the backends is also supported and can be performed during runtime.

NVMe

BlueField compatibility

Added full support for first generation BlueField devices for both full-offload and non-offload modes

NVMe

Performance optimizations

Dramatically improved performance for NVMe devices, and especially optimized for using SPDK NVMe-oF-RDMA block devices as backends

Protocol

Feature

Description

NVMe/virtio-blk

InfiniBand support

In addition to Ethernet, MLNX SNAP supports InfiniBand (starting with BlueField-2). The link type is fully transparent to MLNX SNAP application level – no dedicated configuration changes are needed.

NVMe

NVMe support

Support for NVMe storage interface

virtio-blk

virtio-blk support

Virtio-blk storage interface is introduced on top of BlueField-2. The virtio-blk interface allows customers to extend storage emulation to additional ecosystems.

NVMe/virtio-blk

Multiple devices emulation

Starting with BlueField-2, NVMe/virtio-blk SNAP supports exposing multiple PCIe emulated physical functions (PFs) simultaneously. These PFs can be easily plugged/unplugged (hotplug) to the host PCIe.

Note

Hotplug is supported with this release only on virtio-blk.

NVMe/virtio-blk

SPDK-integrated application

NVMe/virtio-blk SNAP operates as an SPDK application, supporting all standard SPDK capabilities (e.g. managing block devices), and extending them with additional NVMe/virtio-blk SNAP-specific abilities (e.g. managing emulated controllers)

NVMe/virtio-blk

Generic SNAP library

NVMe/virtio-blk SNAP is built over a generic library, libsnap, which provides a clean and simple API to control emulation HW/FW capabilities, and translates them into device-specific commands

© Copyright 2024, NVIDIA. Last updated on May 21, 2024.