From: "Longpeng(Mike)" <longpeng2@huawei.com>
To: berrange@redhat.com
Cc: arei.gonglei@huawei.com, weidong.huang@huawei.com,
armbru@redhat.com, eblake@redhat.com, mst@redhat.com,
qemu-devel@nongnu.org, "Longpeng(Mike)" <longpeng2@huawei.com>
Subject: [Qemu-devel] [PATCH v2 for-2.10 00/18] crypto: add afalg-backend support
Date: Mon, 17 Apr 2017 09:33:08 +0800 [thread overview]
Message-ID: <1492392806-53720-1-git-send-email-longpeng2@huawei.com> (raw)
The AF_ALG socket family is the userspace interface for linux
crypto API, users can use it to access hardware accelerators.
This patchset adds a afalg-backend for qemu crypto subsystem. Currently
when performs encrypt/decrypt, we'll try afalg-backend first and will
back to libiary-backend if it failed.
In the next step, It would support a command parameter to specifies
which backends prefer to and some other improvements.
I measured the performance about the afalg-backend impls, I tested
how many data could be encrypted in 5 seconds.
NOTE: If we use specific hardware crypto cards, I think afalg-backend
would even faster.
test-environment: Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
*sha256*
chunk_size(bytes) MB/sec(afalg:sha256-ssse3) MB/sec(nettle)
512 93.03 185.87
1024 146.32 201.78
2048 213.32 210.93
4096 275.48 215.26
8192 321.77 217.49
16384 349.60 219.26
32768 363.59 219.73
65536 375.79 219.99
*hmac(sha256)*
chunk_size(bytes) MB/sec(afalg:sha256-ssse3) MB/sec(nettle)
512 71.26 165.55
1024 117.43 189.15
2048 180.96 203.24
4096 247.60 211.38
8192 301.99 215.65
16384 340.79 218.22
32768 365.51 219.49
65536 377.92 220.24
*cbc(aes128)*
chunk_size(bytes) MB/sec(afalg:cbc-aes-aesni) MB/sec(nettle)
512 371.76 188.41
1024 559.86 189.64
2048 768.66 192.11
4096 939.15 192.40
8192 1029.48 192.49
16384 1072.79 190.52
32768 1109.38 190.41
65536 1102.38 190.40
---
Changes since v1:
- use "make check-speed" to testing the performance. [Daniel]
- put private definations into crypto/***priv.h. [Daniel]
- remove afalg socket from qapi-schema, put them into crypto/. [Daniel]
- some Error report change. [Daniel]
- s/QCryptoAfalg/QCryptoAFAlg. [Daniel]
- use snprintf with bounds checking instead of sprintf. [Daniel]
- use "qcrypto_afalg_" prefix and "qcrypto_nettle(gcrypt,glib,builtin)_" prefix. [Daniel]
- add testing results in cover-letter. [Gonglei]
---
Longpeng(Mike) (18):
crypto: cipher: introduce context free function
crypto: cipher: introduce qcrypto_cipher_ctx_new for gcrypt-backend
crypto: cipher: introduce qcrypto_cipher_ctx_new for nettle-backend
crypto: cipher: introduce qcrypto_cipher_ctx_new for builtin-backend
crypto: cipher: add cipher driver framework
crypto: hash: add hash driver framework
crypto: hmac: move crypto/hmac.h into include/crypto/
crypto: hmac: introduce qcrypto_hmac_ctx_new for gcrypt-backend
crypto: hmac: introduce qcrypto_hmac_ctx_new for nettle-backend
crypto: hmac: introduce qcrypto_hmac_ctx_new for glib-backend
crypto: hmac: add hmac driver framework
crypto: introduce some common functions for af_alg backend
crypto: cipher: add afalg-backend cipher support
crypto: hash: add afalg-backend hash support
crypto: hmac: add af_alg hmac support
tests: crypto: add cipher speed benchmark support
tests: crypto: add hash speed benchmark support
tests: crypto: add hmac speed benchmark support
configure | 21 ++++
crypto/Makefile.objs | 3 +
crypto/afalg.c | 115 ++++++++++++++++++++
crypto/afalgpriv.h | 64 +++++++++++
crypto/cipher-afalg.c | 225 +++++++++++++++++++++++++++++++++++++++
crypto/cipher-builtin.c | 125 +++++++++++-----------
crypto/cipher-gcrypt.c | 105 +++++++++---------
crypto/cipher-nettle.c | 84 +++++++++------
crypto/cipher.c | 91 ++++++++++++++++
crypto/cipherpriv.h | 51 +++++++++
crypto/hash-afalg.c | 229 ++++++++++++++++++++++++++++++++++++++++
crypto/hash-gcrypt.c | 19 ++--
crypto/hash-glib.c | 19 ++--
crypto/hash-nettle.c | 19 ++--
crypto/hash.c | 24 +++++
crypto/hashpriv.h | 35 ++++++
crypto/hmac-gcrypt.c | 42 ++++----
crypto/hmac-glib.c | 63 ++++++-----
crypto/hmac-nettle.c | 42 ++++----
crypto/hmac.c | 69 ++++++++++++
crypto/hmac.h | 166 -----------------------------
crypto/hmacpriv.h | 45 ++++++++
include/crypto/cipher.h | 9 ++
include/crypto/hmac.h | 175 ++++++++++++++++++++++++++++++
tests/Makefile.include | 13 ++-
tests/benchmark-crypto-cipher.c | 90 ++++++++++++++++
tests/benchmark-crypto-hash.c | 67 ++++++++++++
tests/benchmark-crypto-hmac.c | 96 +++++++++++++++++
tests/test-crypto-cipher.c | 10 +-
29 files changed, 1704 insertions(+), 412 deletions(-)
create mode 100644 crypto/afalg.c
create mode 100644 crypto/afalgpriv.h
create mode 100644 crypto/cipher-afalg.c
create mode 100644 crypto/cipherpriv.h
create mode 100644 crypto/hash-afalg.c
create mode 100644 crypto/hashpriv.h
delete mode 100644 crypto/hmac.h
create mode 100644 crypto/hmacpriv.h
create mode 100644 include/crypto/hmac.h
create mode 100644 tests/benchmark-crypto-cipher.c
create mode 100644 tests/benchmark-crypto-hash.c
create mode 100644 tests/benchmark-crypto-hmac.c
--
1.8.3.1
next reply other threads:[~2017-04-17 1:34 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-17 1:33 Longpeng(Mike) [this message]
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 01/18] crypto: cipher: introduce context free function Longpeng(Mike)
2017-04-21 11:55 ` Gonglei (Arei)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 02/18] crypto: cipher: introduce qcrypto_cipher_ctx_new for gcrypt-backend Longpeng(Mike)
2017-04-21 11:56 ` Gonglei (Arei)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 03/18] crypto: cipher: introduce qcrypto_cipher_ctx_new for nettle-backend Longpeng(Mike)
2017-04-21 11:56 ` Gonglei (Arei)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 04/18] crypto: cipher: introduce qcrypto_cipher_ctx_new for builtin-backend Longpeng(Mike)
2017-04-21 11:56 ` Gonglei (Arei)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 05/18] crypto: cipher: add cipher driver framework Longpeng(Mike)
2017-04-21 12:06 ` Gonglei (Arei)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 06/18] crypto: hash: add hash " Longpeng(Mike)
2017-04-21 12:09 ` Gonglei (Arei)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 07/18] crypto: hmac: move crypto/hmac.h into include/crypto/ Longpeng(Mike)
2017-04-17 13:35 ` Philippe Mathieu-Daudé
2017-04-21 12:11 ` Gonglei (Arei)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 08/18] crypto: hmac: introduce qcrypto_hmac_ctx_new for gcrypt-backend Longpeng(Mike)
2017-04-21 12:15 ` Gonglei (Arei)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 09/18] crypto: hmac: introduce qcrypto_hmac_ctx_new for nettle-backend Longpeng(Mike)
2017-04-21 12:16 ` Gonglei (Arei)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 10/18] crypto: hmac: introduce qcrypto_hmac_ctx_new for glib-backend Longpeng(Mike)
2017-04-21 12:16 ` Gonglei (Arei)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 11/18] crypto: hmac: add hmac driver framework Longpeng(Mike)
2017-04-21 12:25 ` Gonglei (Arei)
2017-04-22 1:26 ` Longpeng (Mike)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 12/18] crypto: introduce some common functions for af_alg backend Longpeng(Mike)
2017-04-21 12:36 ` Gonglei (Arei)
2017-04-22 1:29 ` Longpeng (Mike)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 13/18] crypto: cipher: add afalg-backend cipher support Longpeng(Mike)
2017-04-21 12:59 ` Gonglei (Arei)
2017-04-22 1:36 ` Longpeng (Mike)
2017-04-22 1:51 ` Gonglei (Arei)
2017-04-22 2:04 ` Longpeng (Mike)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 14/18] crypto: hash: add afalg-backend hash support Longpeng(Mike)
2017-04-21 13:01 ` Gonglei (Arei)
2017-04-22 1:37 ` Longpeng (Mike)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 15/18] crypto: hmac: add af_alg hmac support Longpeng(Mike)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 16/18] tests: crypto: add cipher speed benchmark support Longpeng(Mike)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 17/18] tests: crypto: add hash " Longpeng(Mike)
2017-04-17 1:33 ` [Qemu-devel] [PATCH v2 for-2.10 18/18] tests: crypto: add hmac " Longpeng(Mike)
2017-04-17 2:12 ` [Qemu-devel] [PATCH v2 for-2.10 00/18] crypto: add afalg-backend support no-reply
2017-04-17 2:31 ` Longpeng (Mike)
2017-04-21 0:56 ` Longpeng (Mike)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1492392806-53720-1-git-send-email-longpeng2@huawei.com \
--to=longpeng2@huawei.com \
--cc=arei.gonglei@huawei.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=eblake@redhat.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=weidong.huang@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).