
I working on some sbc backup solution, preferrably through VPN however the RPIs(*) fail on this subject miserably due to the missing crypto capacity.
For example here are some results of a Raspberry PI v3 for AES-256
Code: Select all
Doing aes-256-gcm for 3s on 16 size blocks: 1651900 aes-256-gcm's in 3.00s
Doing aes-256-gcm for 3s on 64 size blocks: 478077 aes-256-gcm's in 3.00s
Doing aes-256-gcm for 3s on 256 size blocks: 126013 aes-256-gcm's in 3.00s
Doing aes-256-gcm for 3s on 1024 size blocks: 30857 aes-256-gcm's in 3.00s
Doing aes-256-gcm for 3s on 8192 size blocks: 3940 aes-256-gcm's in 3.00s
Doing aes-256-gcm for 3s on 16384 size blocks: 1958 aes-256-gcm's in 3.00s
OpenSSL 1.1.1s 1 Nov 2022
built on: Wed Nov 2 09:23:54 2022 UTC
options:bn(64,64) rc4(char) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: aarch64-linux-gnu-gcc -fPIC -pthread -Wa,--noexecstack -fstack-clash-protection -D_FORTIFY_SOURCE=2 -O2 -pipe -march=armv8-a -g -I/usr/aarch64-linux-gnu/usr/include -fdebug-prefix-map=/builddir/openssl-1.1.1s=. -Wa,--noexecstack -fstack-clash-protection -O2 -pipe -march=armv8-a -g -fdebug-prefix-map=/builddir/openssl-1.1.1s=. -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DVPAES_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DNDEBUG -D_FORTIFY_SOURCE=2 -I/usr/aarch64-linux-gnu/usr/include
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256-gcm 8810.13k 10198.98k 10753.11k 10532.52k 10758.83k 10693.29k
Code: Select all
openssl speed -evp aes-256-cbc
Doing aes-256-cbc for 3s on 16 size blocks: 101015097 aes-256-cbc's in 2.97s
Doing aes-256-cbc for 3s on 64 size blocks: 38321830 aes-256-cbc's in 2.99s
Doing aes-256-cbc for 3s on 256 size blocks: 9957503 aes-256-cbc's in 2.98s
Doing aes-256-cbc for 3s on 1024 size blocks: 2505831 aes-256-cbc's in 2.99s
Doing aes-256-cbc for 3s on 8192 size blocks: 309705 aes-256-cbc's in 2.98s
Doing aes-256-cbc for 3s on 16384 size blocks: 157358 aes-256-cbc's in 2.98s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(16x,int) des(int) aes(partial) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/lib/ssl\"" -DENGINESDIR="\"/usr/lib/x86_64-linux-gnu/engines-1.1\""
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256-cbc 544189.07k 820266.60k 855409.65k 858184.26k 851376.97k 865152.17k
This shows up well on a VPN tunnel carrying capacity (openvpn).
RPI 3 test:
Code: Select all
[ 1] 0.00-1.00 sec 2.63 MBytes 22.0 Mbits/sec
[ 1] 1.00-2.00 sec 2.38 MBytes 19.9 Mbits/sec
[ 1] 2.00-3.00 sec 2.62 MBytes 22.0 Mbits/sec
[ 1] 3.00-4.00 sec 2.88 MBytes 24.1 Mbits/sec
[ 1] 4.00-5.00 sec 2.12 MBytes 17.8 Mbits/sec
Core i7 laptop test:
Code: Select all
[ 3] 0.0- 1.0 sec 7.88 MBytes 66.1 Mbits/sec
[ 3] 1.0- 2.0 sec 5.25 MBytes 44.0 Mbits/sec
[ 3] 2.0- 3.0 sec 4.12 MBytes 34.6 Mbits/sec
[ 3] 3.0- 4.0 sec 5.25 MBytes 44.0 Mbits/sec
[ 3] 4.0- 5.0 sec 5.25 MBytes 44.0 Mbits/sec
[ 3] 5.0- 6.0 sec 5.38 MBytes 45.1 Mbits/sec
[ 3] 6.0- 7.0 sec 4.12 MBytes 34.6 Mbits/sec
I didn't open this topic for bashing on the PI.
Are there any other tunnel solutions which whilst still providing a decent encryption they can deliver throughput close to at least 100mbit/s?
Or should I just give up with this and look for other SBCs supporting AES_NI (or wait for the RPI5 which hopefully? will).