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 |
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 |