For others who are interested, here's a thread that culminates in the 2.5Gbps number:http://permalink.gmane.org/gmane.linux.network/280175
And here's some StrongSwan documentation about getting there:
1. By itself, with the per-flow encryption only work on a single cpu, or will it load share across cpus?
Parallel Crypto Engine for the Linux Kernel
The Linux kernel encrypts and decrypt IPsec packets on a single CPU core only by default. Since 2.6.34 the pcrypt module (CONFIG_PCRYPT) allows parallelizing this to all available cores.
The module may be loaded with modprobe pcrypt.
To actually use pcrypt, specific crypto drivers must be instantiated with tcrypt or crconf.
The crypto testing module tcrypt (CONFIG_CRYPTO_TEST) is intended for self-testing algorithm implementations, but may be used to instantiate crypto algorithms.
For instance, to parallelize IPsec SAs that use AES with SHA-256 use this (type 3 is AEAD):
This command is expected to fail with something like:
modprobe: ERROR: could not insert 'tcrypt': Resource temporarily unavailable
To parallelized AES-GCM the following may be used:
It's also possible to select a specific implementation of the algorithms, the most efficient implementation should usually be selected automatically, though: