[dpdk-dev] [PATCH v5 0/7] Add crypto PMD optimized for ARMv8

Jerin Jacob jerin.jacob at caviumnetworks.com
Wed Jan 18 16:23:39 CET 2017


On Wed, Jan 18, 2017 at 03:27:23PM +0100, zbigniew.bodek at caviumnetworks.com wrote:
> From: Zbigniew Bodek <zbigniew.bodek at caviumnetworks.com>
> 
> Introduce crypto poll mode driver using ARMv8
> cryptographic extensions. This PMD is optimized
> to provide performance boost for chained
> crypto operations processing, such as:
> * encryption + HMAC generation
> * decryption + HMAC validation.
> In particular, cipher only or hash only
> operations are not provided.
> Performance gain can be observed in tests
> against OpenSSL PMD which also uses ARM
> crypto extensions for packets processing.
> 
> Exemplary crypto performance tests comparison:
> 
> cipher_hash. cipher algo: AES_CBC
> auth algo: SHA1_HMAC cipher key size=16.
> burst_size: 64 ops
> 
> ARMv8 PMD improvement over OpenSSL PMD
> (Optimized for ARMv8 cipher only and hash
> only cases):
> 
> Buffer
> Size(B)   OPS(M)      Throughput(Gbps)
> 64        729 %        742 %
> 128       577 %        592 %
> 256       483 %        476 %
> 512       336 %        351 %
> 768       300 %        286 %
> 1024      263 %        250 %
> 1280      225 %        229 %
> 1536      214 %        213 %
> 1792      186 %        203 %
> 2048      200 %        193 %
> 
> The driver currently supports AES-128-CBC
> in combination with: SHA256 HMAC and SHA1 HMAC.
> The core crypto functionality of this driver is
> provided by the external armv8_crypto library
> that can be downloaded from the Cavium repository:
> https://github.com/caviumnetworks/armv8_crypto
> 
> CPU compatibility with this virtual device
> is detected in run-time and virtual crypto
> device will not be created if CPU doesn't
> provide AES, SHA1, SHA2 and NEON.
> 
> The functionality and performance of this
> code can be tested using generic test application
> with the following commands:
> * cryptodev_sw_armv8_autotest
> * cryptodev_sw_armv8_perftest
> New test vectors and cases have been added
> to the general pool. In particular SHA1 and
> SHA256 HMAC for short cases were introduced.
> This is because low-level ARM assembly code
> is using different code paths for long and
> short data sets, so in order to test the
> mentioned driver correctly, two different
> data sets need to be provided.
> 
> ---
> 
> v5:
> * Add user defined name initializing parameter
>   (according to b8a661f15eb8)
> * Align with the current next-crypto master branch
> * Another changes to commit logs


Tested-by: Jerin Jacob <jerin.jacob at caviumnetworks.com>

dpdk-crypto-next:
changeset: 0f0099d86e9b0b0865837b70a09018b0e4bd8411

https://github.com/caviumnetworks/armv8_crypto.git
changeset: 71258fb9fe100d411a53a247040e675fbae45e63


More information about the dev mailing list