15630257fSFerruh Yigit.. SPDX-License-Identifier: BSD-3-Clause 27c87e2d7SPablo de Lara Copyright(c) 2016-2019 Intel Corporation. 33aafc423SPablo de Lara 43aafc423SPablo de LaraSNOW 3G Crypto Poll Mode Driver 53aafc423SPablo de Lara=============================== 63aafc423SPablo de Lara 78809f78cSBruce RichardsonThe SNOW3G PMD (**librte_crypto_snow3g**) provides poll mode crypto driver support for 87c87e2d7SPablo de Larautilizing `Intel IPSec Multi-buffer library <https://github.com/01org/intel-ipsec-mb>`_ 97c87e2d7SPablo de Larawhich implements F8 and F8 functions for SNOW 3G UEA2 cipher and UIA2 hash algorithms. 103aafc423SPablo de Lara 113aafc423SPablo de LaraFeatures 123aafc423SPablo de Lara-------- 133aafc423SPablo de Lara 143aafc423SPablo de LaraSNOW 3G PMD has support for: 153aafc423SPablo de Lara 163aafc423SPablo de LaraCipher algorithm: 173aafc423SPablo de Lara 18fddf3804SDeepak Kumar Jain* RTE_CRYPTO_CIPHER_SNOW3G_UEA2 193aafc423SPablo de Lara 203aafc423SPablo de LaraAuthentication algorithm: 213aafc423SPablo de Lara 22fddf3804SDeepak Kumar Jain* RTE_CRYPTO_AUTH_SNOW3G_UIA2 233aafc423SPablo 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 283aafc423SPablo de LaraLimitations 293aafc423SPablo de Lara----------- 303aafc423SPablo de Lara 313aafc423SPablo de Lara* Chained mbufs are not supported. 326aef7638SPablo de Lara* SNOW 3G (UIA2) supported only if hash offset field is byte-aligned. 336aef7638SPablo de Lara* In-place bit-level operations for SNOW 3G (UEA2) are not supported 34b537abdbSPablo de Lara (if length and/or offset of data to be ciphered is not byte-aligned). 353aafc423SPablo de Lara 36f272ea5bSPablo de LaraSNOW3G PMD vs AESNI MB PMD 37f272ea5bSPablo de Lara-------------------------- 38f272ea5bSPablo de Lara 39f272ea5bSPablo de LaraAESNI MB PMD also supports SNOW3G cipher and authentication algorithms. 40f272ea5bSPablo de LaraIt is recommended to use the AESNI MB PMD, 41f272ea5bSPablo de Larawhich offers better performance on Intel processors. 42f272ea5bSPablo de LaraTake a look at the PMD documentation (:doc:`aesni_mb`) for more information. 43f272ea5bSPablo de Lara 443aafc423SPablo de LaraInstallation 453aafc423SPablo de Lara------------ 463aafc423SPablo de Lara 477c87e2d7SPablo de LaraTo build DPDK with the SNOW3G_PMD the user is required to download the multi-buffer 480899a87cSRuifeng Wanglibrary and compile it on their user system before building DPDK. 490899a87cSRuifeng Wang 500899a87cSRuifeng WangFor x86 system, the multi-buffer library is available 510899a87cSRuifeng Wang`here <https://github.com/01org/intel-ipsec-mb>`_. 52ad3f114fSSivaramakrishnan VenkatThe latest version of the library supported by this PMD is v1.5, which 53ad3f114fSSivaramakrishnan Venkatcan be downloaded from `<https://github.com/01org/intel-ipsec-mb/archive/v1.5.zip>`_. 547c87e2d7SPablo de Lara 550899a87cSRuifeng WangFor Arm system, ARM64 port of the multi-buffer library can be downloaded from 560899a87cSRuifeng Wang`<https://gitlab.arm.com/arm-reference-solutions/ipsec-mb/-/tree/main/>`_. The 5779e8689bSWathsala Vithanagelatest version of the library supported by this PMD is tagged as SECLIB-IPSEC-2024.07.08. 580899a87cSRuifeng Wang 591d0c90e6SPablo de LaraAfter downloading the library, the user needs to unpack and compile it 607c87e2d7SPablo de Laraon their system before building DPDK: 613aafc423SPablo de Lara 627c87e2d7SPablo de Lara.. code-block:: console 63dab1e57aSPablo de Lara 647c87e2d7SPablo de Lara make 657c87e2d7SPablo de Lara make install 664792d3eaSPablo de Lara 670899a87cSRuifeng WangThe library requires NASM to be built on x86. Depending on the library version, 680899a87cSRuifeng Wangit might require a minimum NASM version (e.g. v0.54 requires at least NASM 2.14). 69dede694cSPablo de Lara 70dede694cSPablo de LaraNASM is packaged for different OS. However, on some OS the version is too old, 71dede694cSPablo de Laraso a manual installation is required. In that case, NASM can be downloaded from 72dede694cSPablo de Lara`NASM website <https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D>`_. 73dede694cSPablo de LaraOnce it is downloaded, extract it and follow these steps: 74dede694cSPablo de Lara 75dede694cSPablo de Lara.. code-block:: console 76dede694cSPablo de Lara 77dede694cSPablo de Lara ./configure 78dede694cSPablo de Lara make 79dede694cSPablo de Lara make install 80dede694cSPablo de Lara 817c87e2d7SPablo de LaraAs a reference, the following table shows a mapping between the past DPDK versions 827c87e2d7SPablo de Laraand the external crypto libraries supported by them: 837c87e2d7SPablo de Lara 847c87e2d7SPablo de Lara.. _table_snow3g_versions: 857c87e2d7SPablo de Lara 867c87e2d7SPablo de Lara.. table:: DPDK and external crypto library version compatibility 877c87e2d7SPablo de Lara 887c87e2d7SPablo de Lara ============= ================================ 897c87e2d7SPablo de Lara DPDK version Crypto library version 907c87e2d7SPablo de Lara ============= ================================ 9150369b2eSBrian Dooley 20.02 - 21.08 Multi-buffer library 0.53 - 1.3 92*8484d74bSBrian Dooley 21.11 - 24.07 Multi-buffer library 1.0 - 1.5 93*8484d74bSBrian Dooley 24.11+ Multi-buffer library 1.4 - 1.5 947c87e2d7SPablo de Lara ============= ================================ 954792d3eaSPablo de Lara 96b7d65109SPablo de LaraInitialization 97b7d65109SPablo de Lara-------------- 98b7d65109SPablo de Lara 99b7d65109SPablo de LaraIn order to enable this virtual crypto PMD, user must: 100b7d65109SPablo de Lara 1017c87e2d7SPablo de Lara* Build the multi buffer library (explained in Installation section). 102b7d65109SPablo de Lara 103b7d65109SPablo de LaraTo use the PMD in an application, user must: 104b7d65109SPablo de Lara 1052f6fec53SThomas Monjalon* Call rte_vdev_init("crypto_snow3g") within the application. 106b7d65109SPablo de Lara 1072f6fec53SThomas Monjalon* Use --vdev="crypto_snow3g" in the EAL options, which will call rte_vdev_init() internally. 108b7d65109SPablo de Lara 109b7d65109SPablo de LaraThe following parameters (all optional) can be provided in the previous two calls: 110b7d65109SPablo de Lara 111b7d65109SPablo de Lara* socket_id: Specify the socket where the memory for the device is going to be allocated 112b7d65109SPablo de Lara (by default, socket_id will be the socket where the core that is creating the PMD is running on). 113b7d65109SPablo de Lara 114b7d65109SPablo de Lara* max_nb_queue_pairs: Specify the maximum number of queue pairs in the device (8 by default). 115b7d65109SPablo de Lara 116b7d65109SPablo de Lara* max_nb_sessions: Specify the maximum number of sessions that can be created (2048 by default). 117b7d65109SPablo de Lara 118b7d65109SPablo de LaraExample: 119b7d65109SPablo de Lara 120b7d65109SPablo de Lara.. code-block:: console 121b7d65109SPablo de Lara 122fd5f9fb9SCiara Power ./dpdk-l2fwd-crypto -l 1 -n 4 --vdev="crypto_snow3g,socket_id=0,max_nb_sessions=128" \ 123fda78c51SPablo de Lara -- -p 1 --cdev SW --chain CIPHER_ONLY --cipher_algo "snow3g-uea2" 124