xref: /f-stack/dpdk/doc/guides/cryptodevs/zuc.rst (revision 8850115b)
1..  SPDX-License-Identifier: BSD-3-Clause
2    Copyright(c) 2016 Intel Corporation.
3
4ZUC Crypto Poll Mode Driver
5===========================
6
7The ZUC PMD (**librte_pmd_zuc**) provides poll mode crypto driver
8support for utilizing Intel Libsso library, which implements F8 and F9 functions
9for ZUC EEA3 cipher and EIA3 hash algorithms.
10
11Features
12--------
13
14ZUC PMD has support for:
15
16Cipher algorithm:
17
18* RTE_CRYPTO_CIPHER_ZUC_EEA3
19
20Authentication algorithm:
21
22* RTE_CRYPTO_AUTH_ZUC_EIA3
23
24Limitations
25-----------
26
27* Chained mbufs are not supported.
28* ZUC (EIA3) supported only if hash offset field is byte-aligned.
29* ZUC (EEA3) supported only if cipher length, cipher offset fields are byte-aligned.
30* ZUC PMD cannot be built as a shared library, due to limitations in
31  in the underlying library.
32
33
34Installation
35------------
36
37To build DPDK with the ZUC_PMD the user is required to download
38the export controlled ``libsso_zuc`` library, by registering in
39`Intel Resource & Design Center <https://www.intel.com/content/www/us/en/design/resource-design-center.html>`_.
40Once approval has been granted, the user needs to search for
41*ZUC 128-EAA3 and 128-EIA3 3GPP cryptographic algorithms Software Library* to download the
42library or directly through this `link <https://cdrdv2.intel.com/v1/dl/getContent/575868>`_.
43After downloading the library, the user needs to unpack and compile it
44on their system before building DPDK::
45
46   make
47
48Initialization
49--------------
50
51In order to enable this virtual crypto PMD, user must:
52
53* Export the environmental variable LIBSSO_ZUC_PATH with the path where
54  the library was extracted (zuc folder).
55
56* Export the environmental variable LD_LIBRARY_PATH with the path
57  where the built libsso library is (LIBSSO_ZUC_PATH/build).
58
59* Build the LIBSSO_ZUC library (explained in Installation section).
60
61* Build DPDK as follows:
62
63.. code-block:: console
64
65	make config T=x86_64-native-linuxapp-gcc
66	sed -i 's,\(CONFIG_RTE_LIBRTE_PMD_ZUC\)=n,\1=y,' build/.config
67	make
68
69To use the PMD in an application, user must:
70
71* Call rte_vdev_init("crypto_zuc") within the application.
72
73* Use --vdev="crypto_zuc" in the EAL options, which will call rte_vdev_init() internally.
74
75The following parameters (all optional) can be provided in the previous two calls:
76
77* socket_id: Specify the socket where the memory for the device is going to be allocated
78  (by default, socket_id will be the socket where the core that is creating the PMD is running on).
79
80* max_nb_queue_pairs: Specify the maximum number of queue pairs in the device (8 by default).
81
82* max_nb_sessions: Specify the maximum number of sessions that can be created (2048 by default).
83
84Example:
85
86.. code-block:: console
87
88    ./l2fwd-crypto -l 1 -n 4 --vdev="crypto_zuc,socket_id=0,max_nb_sessions=128" \
89    -- -p 1 --cdev SW --chain CIPHER_ONLY --cipher_algo "zuc-eea3"
90