[strongSwan] Parallel crypto questions on Centos 7

Eric Germann ekgermann at semperen.com
Mon Oct 31 18:47:57 CET 2016


Hello all,

I’m working through trying to parallelize crypto as found in https://wiki.strongswan.org/projects/strongswan/wiki/Pcrypt <https://wiki.strongswan.org/projects/strongswan/wiki/Pcrypt>

Running Centos 7 HVM AMI in AWS supplied by the Centos project.

Linux ip-100-125-0-18.ec2.internal 3.10.0-327.36.3.el7.x86_64 #1 SMP Mon Oct 24 16:09:20 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux


The crypto I’m using is

ike             = aes128gcm16-aes128gmac-prfsha256-ecp256!
esp             = aes128gcm16-ecp256!


When I load the drivers:

modprobe pcrypt
modprobe tcrypt alg="pcrypt(rfc4106(gcm(aes)))" type=3


I don’t see the expected messages in dmesg.

[ 7532.356768] tcrypt: one or more tests failed!

Further up in dmesg, I see:

[    3.542310] alg: No test for __gcm-aes-aesni (__driver-gcm-aes-aesni)

Questions:

1)	Are the messages benign (and the wiki is a bit out of date for C7?
2)	I don’t see a significant change in performance between the two hosts (shooting a 1GB file via nc over the link).  Should I or does it need to be loaded up with multiple flows going on to see an impact?

For reference, here’s the output of /proc/crypto


name         : rfc4106(gcm(aes))
driver       : pcrypt(rfc4106-gcm-aesni)
module       : pcrypt
priority     : 500
refcnt       : 1
selftest     : passed
type         : aead
async        : yes
blocksize    : 1
ivsize       : 8
maxauthsize  : 16
geniv        : seqiv

name         : __ctr-aes-aesni
driver       : cryptd(__driver-ctr-aes-aesni)
module       : cryptd
priority     : 50
refcnt       : 1
selftest     : passed
type         : ablkcipher
async        : yes
blocksize    : 1
min keysize  : 16
max keysize  : 32
ivsize       : 16
geniv        : <default>

name         : ctr(aes)
driver       : ctr-aes-aesni
module       : kernel
priority     : 400
refcnt       : 1
selftest     : passed
type         : givcipher
async        : yes
blocksize    : 1
min keysize  : 16
max keysize  : 32
ivsize       : 16
geniv        : chainiv

name         : __gcm-aes-aesni
driver       : cryptd(__driver-gcm-aes-aesni)
module       : cryptd
priority     : 50
refcnt       : 14
selftest     : passed
type         : aead
async        : yes
blocksize    : 1
ivsize       : 0
maxauthsize  : 0
geniv        : <built-in>

name         : rfc4106(gcm(aes))
driver       : rfc4106-gcm-aesni
module       : kernel
priority     : 400
refcnt       : 14
selftest     : passed
type         : aead
async        : yes
blocksize    : 1
ivsize       : 8
maxauthsize  : 16
geniv        : seqiv

name         : stdrng
driver       : drbg_nopr_hmac_sha256
module       : drbg
priority     : 221
refcnt       : 2
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_nopr_hmac_sha512
module       : drbg
priority     : 220
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_nopr_hmac_sha384
module       : drbg
priority     : 219
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_nopr_hmac_sha1
module       : drbg
priority     : 218
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_nopr_sha256
module       : drbg
priority     : 217
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_nopr_sha512
module       : drbg
priority     : 216
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_nopr_sha384
module       : drbg
priority     : 215
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_nopr_sha1
module       : drbg
priority     : 214
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_nopr_ctr_aes256
module       : drbg
priority     : 213
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_nopr_ctr_aes192
module       : drbg
priority     : 212
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_nopr_ctr_aes128
module       : drbg
priority     : 211
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_pr_hmac_sha256
module       : drbg
priority     : 210
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_pr_hmac_sha512
module       : drbg
priority     : 209
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_pr_hmac_sha384
module       : drbg
priority     : 208
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_pr_hmac_sha1
module       : drbg
priority     : 207
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_pr_sha256
module       : drbg
priority     : 206
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_pr_sha512
module       : drbg
priority     : 205
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_pr_sha384
module       : drbg
priority     : 204
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_pr_sha1
module       : drbg
priority     : 203
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_pr_ctr_aes256
module       : drbg
priority     : 202
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : stdrng
driver       : drbg_pr_ctr_aes192
module       : drbg
priority     : 201
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : ecb(aes)
driver       : ecb(aes-aesni)
module       : kernel
priority     : 300
refcnt       : 1
selftest     : passed
type         : blkcipher
blocksize    : 16
min keysize  : 16
max keysize  : 32
ivsize       : 0
geniv        : <default>

name         : stdrng
driver       : drbg_pr_ctr_aes128
module       : drbg
priority     : 200
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : fips(ansi_cprng)
driver       : fips_ansi_cprng
module       : ansi_cprng
priority     : 300
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 48

name         : stdrng
driver       : ansi_cprng
module       : ansi_cprng
priority     : 100
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 48

name         : crc32
driver       : crc32-pclmul
module       : crc32_pclmul
priority     : 200
refcnt       : 1
selftest     : passed
type         : shash
blocksize    : 1
digestsize   : 4

name         : __ghash
driver       : cryptd(__ghash-pclmulqdqni)
module       : cryptd
priority     : 50
refcnt       : 1
selftest     : passed
type         : ahash
async        : yes
blocksize    : 16
digestsize   : 16

name         : ghash
driver       : ghash-clmulni
module       : ghash_clmulni_intel
priority     : 400
refcnt       : 1
selftest     : passed
type         : ahash
async        : yes
blocksize    : 16
digestsize   : 16

name         : __ghash
driver       : __ghash-pclmulqdqni
module       : ghash_clmulni_intel
priority     : 0
refcnt       : 1
selftest     : passed
type         : shash
blocksize    : 16
digestsize   : 16

name         : xts(aes)
driver       : xts-aes-aesni
module       : aesni_intel
priority     : 400
refcnt       : 1
selftest     : passed
type         : ablkcipher
async        : yes
blocksize    : 16
min keysize  : 32
max keysize  : 64
ivsize       : 16
geniv        : <default>

name         : lrw(aes)
driver       : lrw-aes-aesni
module       : aesni_intel
priority     : 400
refcnt       : 1
selftest     : passed
type         : ablkcipher
async        : yes
blocksize    : 16
min keysize  : 32
max keysize  : 48
ivsize       : 16
geniv        : <default>

name         : __xts-aes-aesni
driver       : __driver-xts-aes-aesni
module       : aesni_intel
priority     : 0
refcnt       : 1
selftest     : passed
type         : blkcipher
blocksize    : 16
min keysize  : 32
max keysize  : 64
ivsize       : 16
geniv        : <default>

name         : __lrw-aes-aesni
driver       : __driver-lrw-aes-aesni
module       : aesni_intel
priority     : 0
refcnt       : 1
selftest     : passed
type         : blkcipher
blocksize    : 16
min keysize  : 32
max keysize  : 48
ivsize       : 16
geniv        : <default>

name         : pcbc(aes)
driver       : pcbc-aes-aesni
module       : aesni_intel
priority     : 400
refcnt       : 1
selftest     : passed
type         : ablkcipher
async        : yes
blocksize    : 16
min keysize  : 16
max keysize  : 32
ivsize       : 16
geniv        : <default>

name         : rfc4106(gcm(aes))
driver       : rfc4106-gcm-aesni
module       : aesni_intel
priority     : 400
refcnt       : 14
selftest     : passed
type         : nivaead
async        : yes
blocksize    : 1
ivsize       : 8
maxauthsize  : 16
geniv        : seqiv

name         : __gcm-aes-aesni
driver       : __driver-gcm-aes-aesni
module       : aesni_intel
priority     : 0
refcnt       : 14
selftest     : passed
type         : aead
async        : no
blocksize    : 1
ivsize       : 0
maxauthsize  : 0
geniv        : <built-in>

name         : ctr(aes)
driver       : ctr-aes-aesni
module       : aesni_intel
priority     : 400
refcnt       : 1
selftest     : passed
type         : ablkcipher
async        : yes
blocksize    : 1
min keysize  : 16
max keysize  : 32
ivsize       : 16
geniv        : chainiv

name         : __ctr-aes-aesni
driver       : __driver-ctr-aes-aesni
module       : aesni_intel
priority     : 0
refcnt       : 1
selftest     : passed
type         : blkcipher
blocksize    : 1
min keysize  : 16
max keysize  : 32
ivsize       : 16
geniv        : <default>

name         : cbc(aes)
driver       : cbc-aes-aesni
module       : aesni_intel
priority     : 400
refcnt       : 1
selftest     : passed
type         : ablkcipher
async        : yes
blocksize    : 16
min keysize  : 16
max keysize  : 32
ivsize       : 16
geniv        : <default>

name         : __ecb-aes-aesni
driver       : cryptd(__driver-ecb-aes-aesni)
module       : cryptd
priority     : 50
refcnt       : 1
selftest     : passed
type         : ablkcipher
async        : yes
blocksize    : 16
min keysize  : 16
max keysize  : 32
ivsize       : 0
geniv        : <default>

name         : ecb(aes)
driver       : ecb-aes-aesni
module       : aesni_intel
priority     : 400
refcnt       : 1
selftest     : passed
type         : ablkcipher
async        : yes
blocksize    : 16
min keysize  : 16
max keysize  : 32
ivsize       : 0
geniv        : <default>

name         : __cbc-aes-aesni
driver       : __driver-cbc-aes-aesni
module       : aesni_intel
priority     : 0
refcnt       : 1
selftest     : passed
type         : blkcipher
blocksize    : 16
min keysize  : 16
max keysize  : 32
ivsize       : 0
geniv        : <default>

name         : __ecb-aes-aesni
driver       : __driver-ecb-aes-aesni
module       : aesni_intel
priority     : 0
refcnt       : 1
selftest     : passed
type         : blkcipher
blocksize    : 16
min keysize  : 16
max keysize  : 32
ivsize       : 0
geniv        : <default>

name         : __aes-aesni
driver       : __driver-aes-aesni
module       : aesni_intel
priority     : 0
refcnt       : 1
selftest     : passed
type         : cipher
blocksize    : 16
min keysize  : 16
max keysize  : 32

name         : aes
driver       : aes-aesni
module       : aesni_intel
priority     : 300
refcnt       : 1
selftest     : passed
type         : cipher
blocksize    : 16
min keysize  : 16
max keysize  : 32

name         : crct10dif
driver       : crct10dif-pclmul
module       : crct10dif_pclmul
priority     : 200
refcnt       : 1
selftest     : passed
type         : shash
blocksize    : 1
digestsize   : 2

name         : crc32c
driver       : crc32c-intel
module       : crc32c_intel
priority     : 200
refcnt       : 2
selftest     : passed
type         : shash
blocksize    : 1
digestsize   : 4

name         : hmac(sha256)
driver       : hmac(sha256-ssse3)
module       : kernel
priority     : 150
refcnt       : 2
selftest     : passed
type         : shash
blocksize    : 64
digestsize   : 32

name         : hmac(sha1)
driver       : hmac(sha1-ssse3)
module       : kernel
priority     : 150
refcnt       : 2
selftest     : passed
type         : shash
blocksize    : 64
digestsize   : 20

name         : lzo
driver       : lzo-generic
module       : kernel
priority     : 0
refcnt       : 1
selftest     : passed
type         : compression

name         : crc32c
driver       : crc32c-generic
module       : kernel
priority     : 100
refcnt       : 1
selftest     : passed
type         : shash
blocksize    : 1
digestsize   : 4

name         : aes
driver       : aes-generic
module       : kernel
priority     : 100
refcnt       : 1
selftest     : passed
type         : cipher
blocksize    : 16
min keysize  : 16
max keysize  : 32

name         : sha224
driver       : sha224-generic
module       : kernel
priority     : 0
refcnt       : 1
selftest     : passed
type         : shash
blocksize    : 64
digestsize   : 28

name         : sha256
driver       : sha256-generic
module       : kernel
priority     : 0
refcnt       : 1
selftest     : passed
type         : shash
blocksize    : 64
digestsize   : 32

name         : sha1
driver       : sha1-generic
module       : kernel
priority     : 0
refcnt       : 1
selftest     : passed
type         : shash
blocksize    : 64
digestsize   : 20

name         : md5
driver       : md5-generic
module       : kernel
priority     : 0
refcnt       : 1
selftest     : passed
type         : shash
blocksize    : 64
digestsize   : 16

name         : sha256
driver       : sha256-ssse3
module       : kernel
priority     : 150
refcnt       : 3
selftest     : passed
type         : shash
blocksize    : 64
digestsize   : 32

name         : sha1
driver       : sha1-ssse3
module       : kernel
priority     : 150
refcnt       : 5
selftest     : passed
type         : shash
blocksize    : 64
digestsize   : 20

name         : aes
driver       : aes-asm
module       : kernel
priority     : 200
refcnt       : 1
selftest     : passed
type         : cipher
blocksize    : 16
min keysize  : 16
max keysize  : 32

Thanks

EKG

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.strongswan.org/pipermail/users/attachments/20161031/b54999d8/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3705 bytes
Desc: not available
URL: <http://lists.strongswan.org/pipermail/users/attachments/20161031/b54999d8/attachment-0001.bin>


More information about the Users mailing list