No warranty of accuracy is given concerning the contents of the information contained in this publication. To the extent permitted by law no liability (including liability to any person by reason of negligence) will be accepted by SolidRun Ltd., its subsidiaries or employees for any direct or indirect loss or damage caused by omissions from or inaccuracies in this document. SolidRun Ltd. reserves the right to change details in this publication without prior notice. Product and company names herein may be the trademarks of their respective owners.
SolidRun’s SolidNET software defined DPU makes it possible to run a standard DPDK applications on the DPU by keeping all the flexibility a software solution provides, running at a wire speed 2x25Gbps links while exposing the DPU as a virtIO compatible interface.
With that NVMe PMD is provided to customers that emulates an NVME controller where the backend volume(s) can be over iSCSI, NVME over TCP or any other storage technology.
Through the standard protocols and drivers of both VirtIO and NVME, a host server can get both networking and storage capabilities, while through the 1Gbps out-of-band-management an orchestration or management system has the ability to control, isolate, virtualize and accelerate server functions.
SolidNET DPU Software Architecture
SolidNET runs standard Linux, and a DPDK application on top.
The DPDK application can be one of our examples, a standard DPDK application ,or an application created by the customer. The application forwards packets between 2 ports: a SolidNET virtual port, and a DPAA2 (NXP) physical port.
Since the DPDK application sits in the middle of the ports, it can inspect every packet sent from the server, or received from the outside world, and decide if it should drop the packet.
SolidNET uses VirtIO data path.
Please note that there is no Virtual environment, SolidNET is a physical DPU, but it uses the VIrtIO drivers.
The reason for the VirtIO usage is that these drivers have been tested and continuously improved for more than a decade, resulting in a robust and stable drivers for production.
The control path is not VirtIO compatible, therefore SolidNET uses the vDPA framework to implement its control path, so that the vDPA driver is required in the host side (minimal mini driver).
Our Software Kit
SolidNET’s software kit includes DPDK example applications and DPDK polling mode drivers (PMDs).
VirtIO Network PMD
A standard Network PMD, which can reach wire speed (25 Gbps) with a simple forwarding application.
The PMD supports TSO for IPv4, IPv6, Checksum offload, MAC address filtering, promiscuous mode, all multicast mode, Multi Queueing, RSS, speed duplex and status report.
This PMD exposes to the host a standard network device, which can be manipulated with the standard ifconfig/iproute2 tools.
VirtIO Socket PMD
The socket is a generic channel of communication between the host and your DPDK application.
The socket device is very flexible, and allows you to implement whatever you want over the socket.
Send from the host ports/addresses to block/whitelist.
Ask the DPDK application to send some gathered data.
Trigger some special case in the DPDK application.
This PMD exposes to the host a standard VSOCK.
The sockets are created/used with standard POSIX Sockets API functions.
VirtIO RNG (Random number generator) PMD
This PMD exposes to the host a random number generator.
The random numbers are generated from a dedicated HW circuit on the SolidNET DPU.
This PMD creates the following char device in the host: /dev/hwrng.
VirtIO Block PMD
This PMD creates a virtual block device on the host:
While using this PMD, you specify the local/remote volume that will be emulated as a disk device on the host side.
The volume can be an actual disk, a file, a iSCSI initiator, and basically everything (remember, everything is a file in Linux)
If the volume has multiple partitions, these will be exposed as well
/dev/vda1, /dev/vda2 etc...
The block device supports: flush, discard and write zeros commands, multi queueing, writeback and writethrough cache modes.
This is the only PMD that is not a VirtIO device, and it uses a dedicated PCIe physical function.
This is a standard NVMe device, so almost every platform can work with this device (UEFI, U-boot, Linux ,Windows etc..).
Like the VirtIO block PMD, this PMD emulates a local/remote volume.
One difference is that this device can emulate multiple volumes, everyone as a different NVMe namespace.
The host can boot from this emulated device.
SolidNET side DPDK applications
snet_fwd - A simple application that demonstrates the usage of each SolidNET’s PMD. The application will forward packets between the VirtIO network PMDs and the physical DPAA ports (up to 2 channels - one for each SFP port). The application will print every message received from the socket and echo it back to the host.
snet_socket - An application that forwards packets between VirtIO network PMDs and the physical DPAA ports while enforcing rules received from the host through the socket PMD. The rules can be block/whitelist UDP/TCP/ICMP packets for a specific IPv4 address.
Host side applications
A small application to send rules to snet_socket DPDK application. This application prompts the user to enter specific rules which are sent to the DPU snet_socket application through the socket device.
Get software access
Please contact SolidRun to gain access to SolidNET’s source code.