[dpdk-dev] [PATCH v3] crypto/aesni_gcm: migration from MB library to ISA-L

Thomas Monjalon thomas.monjalon at 6wind.com
Tue Jan 3 15:14:46 CET 2017


2017-01-03 14:02, Piotr Azarewicz:
> Current Cryptodev AES-NI GCM PMD is implemented using Multi Buffer
> Crypto library.This patch reimplement the device using ISA-L Crypto
> library: https://github.com/01org/isa-l_crypto.
> 
> The migration entailed the following additional support for:
>   * GMAC algorithm.
>   * 256-bit cipher key.
>   * Session-less mode.
>   * Out-of place processing
>   * Scatter-gatter support for chained mbufs (only out-of place and
>     destination mbuf must be contiguous)
> 
> Verified current unit tests and added new unit tests to verify new
> functionalities.
> 
> Signed-off-by: Piotr Azarewicz <piotrx.t.azarewicz at intel.com>
[...]
>  The AES-NI GCM PMD (**librte_pmd_aesni_gcm**) provides poll mode crypto driver
> -support for utilizing Intel multi buffer library (see AES-NI Multi-buffer PMD documentation
> -to learn more about it, including installation).
> -
> -The AES-NI GCM PMD has current only been tested on Fedora 21 64-bit with gcc.
> +support for utilizing Intel ISA-L crypto library, which provides operation acceleration
> +through the AES-NI instruction sets for AES-GCM authenticated cipher algorithm.

Please could you compare these libraries regarding the performance?

[...]
>  Features
>  --------
> @@ -49,16 +47,21 @@ Cipher algorithms:
>  Authentication algorithms:
>  
>  * RTE_CRYPTO_AUTH_AES_GCM
> +* RTE_CRYPTO_AUTH_AES_GMAC
> +
> +Installation
> +------------
> +
> +To build DPDK with the AESNI_GCM_PMD the user is required to install
> +the ``libisal_crypto`` library in the build environment.
> +For download and more details please visit `<https://github.com/01org/isa-l_crypto>`_.

[...]
>  Limitations
>  -----------
>  
> -* Chained mbufs are not supported.
> +* Chained mbufs are supported but only out-of-place (destination mbuf must be contiguous).
>  * Hash only is not supported.
>  * Cipher only is not supported.
> -* Only in-place is currently supported (destination address is the same as source address).
> -* Only supports session-oriented API implementation (session-less APIs are not supported).
>  *  Not performance tuned.

[...]
> --- a/drivers/crypto/aesni_gcm/Makefile
> +++ b/drivers/crypto/aesni_gcm/Makefile
> @@ -31,9 +31,6 @@
>  include $(RTE_SDK)/mk/rte.vars.mk
>  
>  ifneq ($(MAKECMDGOALS),clean)
> -ifeq ($(AESNI_MULTI_BUFFER_LIB_PATH),)
> -$(error "Please define AESNI_MULTI_BUFFER_LIB_PATH environment variable")
> -endif
>  endif
>  
>  # library name
> @@ -50,10 +47,7 @@ LIBABIVER := 1
>  EXPORT_MAP := rte_pmd_aesni_gcm_version.map
>  
>  # external library dependencies
> -CFLAGS += -I$(AESNI_MULTI_BUFFER_LIB_PATH)
> -CFLAGS += -I$(AESNI_MULTI_BUFFER_LIB_PATH)/include
> -LDLIBS += -L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB
> -LDLIBS += -lcrypto
> +LDLIBS += -lisal_crypto

You need to update the script test-build.sh.
Thanks


More information about the dev mailing list