OpenSSL with Crypto Acceleration on BBB
I'm excited to say I've got OpenSSL using crypto acceleration working on the BBB using debian! (at least, I'm pretty sure based on my OpenSSL tests ;) )
The quick instructions are:
1. Download R. Nelson's kernel headers for Debian (since that's what I was using).
2. Make the cryptodev kernel module*
3. Recompile OpenSSL to use CRYPTODEV
*I had to tweak arch/arm/include/asm/timex.h to change the line
#include <mach/timex.h> to read: #include
<usr/src/linux-headers-3.8.13-bone26/arch/arm/include/asm/timex.h>
Detailed instructions are on my website:
Josh
Here's the output of the openssl-tests:
Without cryptodev
debian@arm:~/openssl-1.0.1e/cryptodev-linux-1.6$ time openssl speed -evp aes-128-cbc
Doing aes-128-cbc for 3s on 16 size blocks: 2666405 aes-128-cbc's in 2.99s
Doing aes-128-cbc for 3s on 64 size blocks: 905987 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 240811 aes-128-cbc's in 2.99s
Doing aes-128-cbc for 3s on 1024 size blocks: 61145 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 8192 size blocks: 7677 aes-128-cbc's in 3.00s
OpenSSL 1.0.1e 11 Feb 2013
built on: Mon Mar 18 21:48:12 UTC 2013
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -DOPENSSLPIC -DZLIB -DOPENSSLTHREADS -DREENTRANT -DDSODLFCN -DHAVEDLFCNH -DLENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -DFORTIFY_SOURCE=2 -Wl,-z,relro -Wa,--noexecstack -Wall
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-128-cbc 14268.39k 19327.72k 20617.93k 20870.83k 20963.33k
real 0m15.114s
user 0m15.031s
sys 0m0.041s
With cryptodev
debian@arm:/usr/local/ssl/bin$ time /usr/local/ssl/bin/openssl speed -evp aes-128-cbc
Doing aes-128-cbc for 3s on 16 size blocks: 28166 aes-128-cbc's in 0.04s
Doing aes-128-cbc for 3s on 64 size blocks: 22445 aes-128-cbc's in 0.03s
Doing aes-128-cbc for 3s on 256 size blocks: 29933 aes-128-cbc's in 0.05s
Doing aes-128-cbc for 3s on 1024 size blocks: 16018 aes-128-cbc's in 0.04s
Doing aes-128-cbc for 3s on 8192 size blocks: 4861 aes-128-cbc's in 0.02s
OpenSSL 1.0.1e 11 Feb 2013
built on: Fri Oct 4 01:48:18 UTC 2013
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DOPENSSLTHREADS -DREENTRANT -DDSODLFCN -DHAVEDLFCNH -DHAVECRYPTODEV -DUSECRYPTDEVDIGESTS -march=armv7-a -Wa,--noexecstack -DTERMIO -O3 -Wall -DOPENSSLBNASMMONT -DOPENSSLBNASMGF2m -DSHA1ASM -DSHA256ASM -DSHA512ASM -DAESASM -DGHASH_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-128-cbc 11266.40k 47882.67k 153256.96k 410060.80k 1991065.60k
real 0m15.326s
user 0m0.225s
sys 0m5.990s