xref: /dpdk/doc/guides/cryptodevs/snow3g.rst (revision 8484d74bd656bc0e951a3ed4e0816ee0fea5e593)
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