ConnMan VPN support in OSMC

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?