The Pi has two main shortcomings as far as OpenVPN throughput is concerned:
- a relatively slow ethernet connector that shares the USB bus;
- no hardware acceleration for AES encryption.
As far as the second point is concerned, you might be surprised by the figures (on a Pi 3):
osmc@osmc:~$ openssl speed aes-128-cbc
<snip>
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-128 cbc 39545.79k 47180.76k 49610.50k 50413.91k 50645.67k
For the AES-128-CBC cipher, the CPU is able to encrypt 50 megabytes per second with a 1k block size. That’s 400 megabits per second. Clearly, there are other significant overheads with OpenVPN but it’s not as slow as you seem to think.
Here is the same test on a Vero4K:
osmc@osmc:~$ openssl speed aes-128-cbc
<snip>
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-128-cbc 42325.40k 55580.25k 60183.38k 61385.39k 62100.29k
So 20% faster by default, plus the Vero4K doesn’t share its ethernet with the USB bus.
But if you look at this thread, you’ll see that the Vero4K is actually capable of:
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-128-cbc 143775.92k 415486.72k 756965.46k 974767.10k 1064138.07k
That’s almost 1 gigabyte per second encryption with a 1k block. Would that be fast enough?