qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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

             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).