Да, очередной пост на эту тему ;)
Есть подкроватный «сервер» на базе Celeron J3355. На нём под KVM запущена pfSense (2.4.4), в которой поднят OpenVPN (2.4.6). На данный момент на гигабитной локалке не удаётся получить скорость выше 50 мегабит для TCP и 35 для UDP (что довольно странно).
Судя по top, openvpn жрёт 90% ЦП, ещё 10% - iperf. Довольно логично было бы забить на это говно, если бы я не помнил, что на убогой Orange Pi видел 60 мегабит «искаропки».
Что было проделано:
- Проверено, что хост использует VT-x, а не VT-d
- В /etc/libvirt/qemu/pfSense.xml выставлен тип процессора host-passthrough
- В настройках pfSense выставлена загрузка AES-NI и отключен BSD cryptodev
После этого в виртуалке фичах процессора появился AESNI, и openssl speed -evp aes-256-cbc заметно ускорился. На дашборде появились надписи «AES-NI CPU Crypto: Yes (active)» и «Hardware crypto: AES-CBC,AES-XTS,AES-GCM,AES-ICM». Спидтест (iperf в то время я ещё не установил) показывал всё те же унылые 25-30 мбит.
Дальнейшие страдания:
- Сгенерированы более простые сертификаты: CA - 2048 бит, клиента и сервера - 1024 бита.
- Увеличен размер буфера до 2 Мб
- Отключено сжатие
- Включены экспериментальные фичи
- Отключена защита от Meltdown (лол)
- Отключен файрволл
- Отключены все пункты, начинающиеся на"Disable hardware*"
- Перезагрузил роутер
Вся эта ерунда повысила скорость до 30-35 мегабит. Игры с MTU, TOS, включением-отключением Intel RDRAND в качестве аппаратного ускорения и другими рандомными галочками ничего не дали.
ВНЕЗАПНО, когда я сменил UDP на TCP, скорость увеличилась до ~50. Вернул обратно нормальные сертификаты (4096 и 2048 бит) и AES-256-CBC - скорость снизилась незначительно, вероятно, дело не в них.
Потерь между двумя хостами не наблюдается, iperf из виртуальной машины при отключенном VPN выдаёт 600 мегабит.
Чзх и как с этим жить? .-.