Software Architecture
Figure 1 shows the overall architecture of the open source SPDK.
SPDK consists of the application protocol layer, storage service layer, block device layer, and driver layer from top to bottom.
- The application protocol layer includes protocols such as NVMe over Fabrics (NVMe-oF) and iSCSI target for network storage and vhost and vfio-user for virtualization.
- The storage service layer provides services such as partitioning, Open CAS Framework (OCF), and Blobstore file system (BlobFS).
- The block device layer abstracts common block devices (bdev) to support various back-end storage media, such as NVMe, NVMe-oF, and Ceph RBD, as well as custom storage devices.
- The driver layer consists of user-mode drivers implemented by SPDK.
The open source SPDK involves many components, and this document describes only those related to the crypto, compression, and CRC features. The crypto and compression features are implemented at the storage service layer.
- The crypto module is located at the block device layer. It uses encryption algorithms of OpenSSL to encrypt user data. It provides the AES and SM4 symmetric encryption algorithms and the RSA asymmetric encryption algorithm. You can also configure KAE for these algorithms to improve the crypto performance or reduce the CPU usage.
- The compression module compresses user data using a compression algorithm, which saves storage space and reduces data transmission over the network. The compression driver in the Data Plane Development Kit (DPDK) is used for compression. To offload the workload to KAE, set the driver to the zlib driver. For details, see Using the SPDK Compression Feature.
- CRC is a common algorithm used to detect errors in data transmission or storage. It performs specific mathematical operations on data blocks to generate a short CRC value for data integrity check. In SPDK, CRC is mainly used in the NVMe-oF communication protocol to ensure correct data transmission and in data storage to detect silent errors in drives.
Parent topic: Feature Description
