15630257fSFerruh Yigit.. SPDX-License-Identifier: BSD-3-Clause 261f7c988SPablo de Lara Copyright(c) 2016-2019 Intel Corporation. 3cf7685d6SPablo de Lara 4cf7685d6SPablo de LaraZUC Crypto Poll Mode Driver 5cf7685d6SPablo de Lara=========================== 6cf7685d6SPablo de Lara 78809f78cSBruce RichardsonThe ZUC PMD (**librte_crypto_zuc**) provides poll mode crypto driver support for 861f7c988SPablo de Larautilizing `Intel IPSec Multi-buffer library <https://github.com/01org/intel-ipsec-mb>`_ 961f7c988SPablo de Larawhich implements F8 and F9 functions for ZUC EEA3 cipher and EIA3 hash algorithms. 10cf7685d6SPablo de Lara 11cf7685d6SPablo de LaraFeatures 12cf7685d6SPablo de Lara-------- 13cf7685d6SPablo de Lara 14cf7685d6SPablo de LaraZUC PMD has support for: 15cf7685d6SPablo de Lara 16cf7685d6SPablo de LaraCipher algorithm: 17cf7685d6SPablo de Lara 18cf7685d6SPablo de Lara* RTE_CRYPTO_CIPHER_ZUC_EEA3 19cf7685d6SPablo de Lara 20cf7685d6SPablo de LaraAuthentication algorithm: 21cf7685d6SPablo de Lara 22cf7685d6SPablo de Lara* RTE_CRYPTO_AUTH_ZUC_EIA3 23cf7685d6SPablo de Lara 24f272ea5bSPablo de Lara.. note:: 25f272ea5bSPablo de Lara 26f272ea5bSPablo de Lara The latest v1.3 add ARM64 port of ipsec-mb library support ARM platform. 27f272ea5bSPablo de Lara 28cf7685d6SPablo de LaraLimitations 29cf7685d6SPablo de Lara----------- 30cf7685d6SPablo de Lara 31cf7685d6SPablo de Lara* Chained mbufs are not supported. 32cf7685d6SPablo de Lara* ZUC (EIA3) supported only if hash offset field is byte-aligned. 33cf7685d6SPablo de Lara* ZUC (EEA3) supported only if cipher length, cipher offset fields are byte-aligned. 3419ed3326SPablo de Lara 35f272ea5bSPablo de LaraZUC PMD vs AESNI MB PMD 36f272ea5bSPablo de Lara----------------------- 37f272ea5bSPablo de Lara 38f272ea5bSPablo de LaraAESNI MB PMD also supports ZUC cipher and authentication algorithms. 39f272ea5bSPablo de LaraIt is recommended to use the AESNI MB PMD, 40f272ea5bSPablo de Larawhich offers better performance on Intel processors. 41f272ea5bSPablo de LaraTake a look at the PMD documentation (:doc:`aesni_mb`) for more information. 42cf7685d6SPablo de Lara 43cf7685d6SPablo de LaraInstallation 44cf7685d6SPablo de Lara------------ 45cf7685d6SPablo de Lara 4661f7c988SPablo de LaraTo build DPDK with the ZUC_PMD the user is required to download the multi-buffer 470899a87cSRuifeng Wanglibrary and compile it on their user system before building DPDK. 480899a87cSRuifeng Wang 490899a87cSRuifeng WangFor x86 system, the multi-buffer library is available 500899a87cSRuifeng Wang`here <https://github.com/01org/intel-ipsec-mb>`_. 51ad3f114fSSivaramakrishnan VenkatThe latest version of the library supported by this PMD is v1.5, which 52ad3f114fSSivaramakrishnan Venkatcan be downloaded from `<https://github.com/01org/intel-ipsec-mb/archive/v1.5.zip>`_. 5361f7c988SPablo de Lara 540899a87cSRuifeng WangFor Arm system, ARM64 port of the multi-buffer library can be downloaded from 550899a87cSRuifeng Wang`<https://gitlab.arm.com/arm-reference-solutions/ipsec-mb/-/tree/main/>`_. The 5679e8689bSWathsala Vithanagelatest version of the library supported by this PMD is tagged as SECLIB-IPSEC-2024.07.08. 570899a87cSRuifeng Wang 58cf7685d6SPablo de LaraAfter downloading the library, the user needs to unpack and compile it 5961f7c988SPablo de Laraon their system before building DPDK: 6061f7c988SPablo de Lara 6161f7c988SPablo de Lara.. code-block:: console 62cf7685d6SPablo de Lara 63cf7685d6SPablo de Lara make 6461f7c988SPablo de Lara make install 6561f7c988SPablo de Lara 660899a87cSRuifeng WangThe library requires NASM to be built on x86. Depending on the library version, 670899a87cSRuifeng Wangit might require a minimum NASM version (e.g. v0.54 requires at least NASM 2.14). 68dede694cSPablo de Lara 69dede694cSPablo de LaraNASM is packaged for different OS. However, on some OS the version is too old, 70dede694cSPablo de Laraso a manual installation is required. In that case, NASM can be downloaded from 71dede694cSPablo de Lara`NASM website <https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D>`_. 72dede694cSPablo de LaraOnce it is downloaded, extract it and follow these steps: 73dede694cSPablo de Lara 74dede694cSPablo de Lara.. code-block:: console 75dede694cSPablo de Lara 76dede694cSPablo de Lara ./configure 77dede694cSPablo de Lara make 78dede694cSPablo de Lara make install 79dede694cSPablo de Lara 8061f7c988SPablo de LaraAs a reference, the following table shows a mapping between the past DPDK versions 8161f7c988SPablo de Laraand the external crypto libraries supported by them: 8261f7c988SPablo de Lara 8361f7c988SPablo de Lara.. _table_zuc_versions: 8461f7c988SPablo de Lara 8561f7c988SPablo de Lara.. table:: DPDK and external crypto library version compatibility 8661f7c988SPablo de Lara 8761f7c988SPablo de Lara ============= ================================ 8861f7c988SPablo de Lara DPDK version Crypto library version 8961f7c988SPablo de Lara ============= ================================ 9050369b2eSBrian Dooley 20.02 - 21.08 Multi-buffer library 0.53 - 1.3 91*8484d74bSBrian Dooley 21.11 - 24.07 Multi-buffer library 1.0 - 1.5 92*8484d74bSBrian Dooley 24.11+ Multi-buffer library 1.4 - 1.5 9361f7c988SPablo de Lara ============= ================================ 9461f7c988SPablo de Lara 95cf7685d6SPablo de LaraInitialization 96cf7685d6SPablo de Lara-------------- 97cf7685d6SPablo de Lara 98cf7685d6SPablo de LaraIn order to enable this virtual crypto PMD, user must: 99cf7685d6SPablo de Lara 10061f7c988SPablo de Lara* Build the multi buffer library (explained in Installation section). 101cf7685d6SPablo de Lara 102cf7685d6SPablo de LaraTo use the PMD in an application, user must: 103cf7685d6SPablo de Lara 1042f6fec53SThomas Monjalon* Call rte_vdev_init("crypto_zuc") within the application. 105cf7685d6SPablo de Lara 1062f6fec53SThomas Monjalon* Use --vdev="crypto_zuc" in the EAL options, which will call rte_vdev_init() internally. 107cf7685d6SPablo de Lara 108cf7685d6SPablo de LaraThe following parameters (all optional) can be provided in the previous two calls: 109cf7685d6SPablo de Lara 110cf7685d6SPablo de Lara* socket_id: Specify the socket where the memory for the device is going to be allocated 111cf7685d6SPablo de Lara (by default, socket_id will be the socket where the core that is creating the PMD is running on). 112cf7685d6SPablo de Lara 113cf7685d6SPablo de Lara* max_nb_queue_pairs: Specify the maximum number of queue pairs in the device (8 by default). 114cf7685d6SPablo de Lara 115cf7685d6SPablo de Lara* max_nb_sessions: Specify the maximum number of sessions that can be created (2048 by default). 116cf7685d6SPablo de Lara 117cf7685d6SPablo de LaraExample: 118cf7685d6SPablo de Lara 119cf7685d6SPablo de Lara.. code-block:: console 120cf7685d6SPablo de Lara 121fd5f9fb9SCiara Power ./dpdk-l2fwd-crypto -l 1 -n 4 --vdev="crypto_zuc,socket_id=0,max_nb_sessions=128" \ 122fda78c51SPablo de Lara -- -p 1 --cdev SW --chain CIPHER_ONLY --cipher_algo "zuc-eea3" 123