Acceleration - Аппаратное ускорение

Обзор

Аппаратное ускорение криптографических операций позволяет значительно повысить производительность VyOS при работе с VPN-туннелями, IPsec-соединениями и другими криптографическими операциями. VyOS поддерживает использование специализированных аппаратных средств для разгрузки процессора от ресурсоемких операций шифрования и дешифрования.

Поддерживаемые технологии

VyOS поддерживает следующие технологии аппаратного ускорения:

  • Intel Quick Assist Technology (QAT) - специализированный процессор для криптографических операций и сжатия данных
  • AES-NI (Advanced Encryption Standard New Instructions) - набор инструкций процессора Intel/AMD для аппаратного шифрования AES
  • Аппаратные криптографические модули в процессорах Intel Atom серии C3000 и выше

Преимущества использования

  • Повышение производительности - до 3х раз для IPsec-туннелей при использовании Intel QAT
  • Снижение нагрузки на CPU - криптографические операции выполняются специализированным оборудованием
  • Масштабируемость - возможность обработки большего количества VPN-соединений
  • Энергоэффективность - меньшее потребление энергии на операцию шифрования

Применение в облачных средах

Yandex Cloud: В виртуализированных средах Yandex Cloud физическое оборудование Intel QAT недоступно, однако VyOS может использовать:

  • Инструкции AES-NI, проброшенные гипервизором (доступны на большинстве современных типов виртуальных машин)
  • Программную криптографию с оптимизациями
  • Рекомендуется использовать типы ВМ с высокой частотой процессора для VPN-шлюзов

VK Cloud (bare-metal): При использовании bare-metal серверов VK Cloud с процессорами Intel Xeon или Atom серии C3000 доступно полноценное аппаратное ускорение:

  • Intel QAT для максимальной производительности IPsec
  • Полная поддержка всех функций аппаратного ускорения
  • Рекомендуется для высоконагруженных VPN-шлюзов

Intel Quick Assist Technology (QAT)

Intel QAT - это технология аппаратного ускорения, которая предоставляет криптографические операции и сжатие данных с высокой производительностью при низком энергопотреблении.

Поддерживаемое оборудование

Intel QAT доступна на следующих платформах:

  • Intel Atom Processor C3000 Series (Denverton)

    • C3308, C3338, C3508, C3538, C3558, C3758, C3850, C3950, C3955
    • Встроенные QuickAssist-модули для криптографии и сжатия
  • Intel Xeon Scalable Processors (2-го поколения и выше)

    • Xeon Silver, Gold, Platinum с поддержкой QAT
    • До 32 криптографических акселераторов в системе
  • Intel Xeon D Processors (D-1500, D-2100 Series)

    • Встроенная поддержка QAT
    • Оптимальны для сетевых appliance
  • Дискретные адаптеры Intel QuickAssist Adapter

    • Intel QuickAssist Adapter 8950
    • Intel QuickAssist Adapter 8960
    • Intel QuickAssist Adapter 8970

Проверка наличия QAT

Перед настройкой необходимо проверить, поддерживается ли QAT на вашем оборудовании:

show system acceleration qat

Пример вывода при наличии QAT:

Intel QuickAssist Technology acceleration detected

Devices:
  qat_dev0: Ready
  qat_dev1: Ready

Status: Available
Driver Version: 4.19.0
Firmware Version: 4.11.0

Пример вывода при отсутствии QAT:

Intel QuickAssist Technology not detected

No QAT devices found on this system.
AES-NI CPU instructions: Available (fallback to software crypto with hardware AES)

Проверка статуса QAT

Для проверки готовности QAT-устройств используйте команду:

show system acceleration qat status

Пример вывода:

QAT Device Status:

Device qat_dev0:
  State: up
  Node Id: 0
  Device Type: c3xxx
  Services: crypto;dc (Crypto and Compression)
  Instances: 3

Device qat_dev1:
  State: up
  Node Id: 0
  Device Type: c3xxx
  Services: crypto;dc
  Instances: 3

Total Devices: 2
Active Devices: 2

Проверка конфигурации устройства

Для просмотра детальной конфигурации конкретного QAT-устройства:

show system acceleration qat device qat_dev0 config

Пример вывода:

[GENERAL]
ServicesEnabled = cy;dc

ConfigVersion = 2

[KERNEL]
NumberCyInstances = 1
NumberDcInstances = 0

# Crypto - Kernel instance
Cy0Name = "IPSec0"
Cy0IsPolled = 0
Cy0CoreAffinity = 0

[SSL]
NumberCyInstances = 1
NumberDcInstances = 1

# Crypto - User instance
Cy0Name = "SSL0"
Cy0IsPolled = 1
Cy0CoreAffinity = 0

# Data Compression - User instance
Dc0Name = "Dc0"
Dc0IsPolled = 1
Dc0CoreAffinity = 0

Мониторинг криптографических потоков

Для просмотра счетчиков шифрования и статистики использования:

show system acceleration qat device qat_dev0 flows

Пример вывода:

QAT Device qat_dev0 Flow Statistics:

Crypto Operations:
  Encryption Requests: 1,456,892
  Decryption Requests: 1,445,321
  Authentication Requests: 2,902,213
  Total Operations: 5,804,426

  Encryption Bytes: 1.2 GB
  Decryption Bytes: 1.1 GB
  Total Bytes Processed: 2.3 GB

Compression Operations:
  Compression Requests: 0
  Decompression Requests: 0
  Total Bytes Compressed: 0 B

Performance:
  Operations/sec: 45,621
  Throughput: 778 Mbps
  Average Latency: 0.12 ms

Errors: 0

Настройка аппаратного ускорения

Включение Intel QAT

Для включения поддержки Intel QAT выполните следующую настройку:

configure
set system acceleration qat
commit
save

После включения QAT, система автоматически начнет использовать аппаратное ускорение для всех поддерживаемых криптографических операций, включая:

  • IPsec VPN-туннели
  • OpenVPN соединения (с ограничениями)
  • SSL/TLS операции
  • Операции сжатия данных

Отключение QAT

Если необходимо вернуться к программной криптографии:

configure
delete system acceleration qat
commit
save

Проверка применения настроек

После включения QAT проверьте, что криптографические операции используют аппаратное ускорение:

show system acceleration qat
show system acceleration qat status

Также можно проверить загрузку QAT-устройств:

show system acceleration qat device qat_dev0 flows

При активных IPsec-туннелях вы должны увидеть рост счетчиков операций шифрования/дешифрования.

IPsec Hardware Offload

Intel QAT обеспечивает аппаратное ускорение для следующих IPsec-алгоритмов:

Поддерживаемые алгоритмы шифрования

  • AES-CBC (128, 192, 256 bit)
  • AES-CTR (128, 192, 256 bit)
  • AES-GCM (128, 192, 256 bit) - рекомендуется
  • 3DES-CBC

Поддерживаемые алгоритмы аутентификации

  • HMAC-SHA1
  • HMAC-SHA256 - рекомендуется
  • HMAC-SHA384
  • HMAC-SHA512
  • AES-XCBC-MAC
  • AES-GMAC

Поддерживаемые группы Diffie-Hellman

  • Group 2 (MODP 1024-bit)
  • Group 5 (MODP 1536-bit)
  • Group 14 (MODP 2048-bit) - рекомендуется
  • Group 15 (MODP 3072-bit)
  • Group 16 (MODP 4096-bit)
  • Group 19 (ECP 256-bit)
  • Group 20 (ECP 384-bit)
  • Group 21 (ECP 521-bit)

Пример конфигурации IPsec с QAT

Настройка site-to-site VPN с использованием алгоритмов, оптимизированных для QAT:

configure

# ESP группа с использованием AES-GCM (оптимально для QAT)
set vpn ipsec esp-group QAT-ESP lifetime 3600
set vpn ipsec esp-group QAT-ESP mode tunnel
set vpn ipsec esp-group QAT-ESP pfs dh-group14
set vpn ipsec esp-group QAT-ESP proposal 1 encryption aes256gcm128
set vpn ipsec esp-group QAT-ESP proposal 1 hash sha256

# IKE группа с современными параметрами
set vpn ipsec ike-group QAT-IKE dead-peer-detection action restart
set vpn ipsec ike-group QAT-IKE dead-peer-detection interval 30
set vpn ipsec ike-group QAT-IKE dead-peer-detection timeout 120
set vpn ipsec ike-group QAT-IKE ikev2-reauth no
set vpn ipsec ike-group QAT-IKE key-exchange ikev2
set vpn ipsec ike-group QAT-IKE lifetime 28800
set vpn ipsec ike-group QAT-IKE proposal 1 dh-group 14
set vpn ipsec ike-group QAT-IKE proposal 1 encryption aes256gcm128
set vpn ipsec ike-group QAT-IKE proposal 1 hash sha256

# Site-to-site peer конфигурация
set vpn ipsec site-to-site peer 203.0.113.10 authentication mode pre-shared-secret
set vpn ipsec site-to-site peer 203.0.113.10 authentication pre-shared-secret 'YourStrongPSK'
set vpn ipsec site-to-site peer 203.0.113.10 connection-type initiate
set vpn ipsec site-to-site peer 203.0.113.10 ike-group QAT-IKE
set vpn ipsec site-to-site peer 203.0.113.10 local-address 198.51.100.10
set vpn ipsec site-to-site peer 203.0.113.10 tunnel 1 esp-group QAT-ESP
set vpn ipsec site-to-site peer 203.0.113.10 tunnel 1 local prefix 10.0.1.0/24
set vpn ipsec site-to-site peer 203.0.113.10 tunnel 1 remote prefix 10.0.2.0/24

# Включение QAT ускорения
set system acceleration qat

commit
save

Пример для Yandex Cloud (без QAT, с AES-NI)

В виртуализированной среде Yandex Cloud используйте оптимальную конфигурацию для программной криптографии с AES-NI:

configure

# ESP группа для программной криптографии
set vpn ipsec esp-group YC-ESP lifetime 3600
set vpn ipsec esp-group YC-ESP mode tunnel
set vpn ipsec esp-group YC-ESP pfs dh-group14
set vpn ipsec esp-group YC-ESP proposal 1 encryption aes256
set vpn ipsec esp-group YC-ESP proposal 1 hash sha256

# IKE группа
set vpn ipsec ike-group YC-IKE dead-peer-detection action restart
set vpn ipsec ike-group YC-IKE dead-peer-detection interval 30
set vpn ipsec ike-group YC-IKE dead-peer-detection timeout 120
set vpn ipsec ike-group YC-IKE ikev2-reauth no
set vpn ipsec ike-group YC-IKE key-exchange ikev2
set vpn ipsec ike-group YC-IKE lifetime 28800
set vpn ipsec ike-group YC-IKE proposal 1 dh-group 14
set vpn ipsec ike-group YC-IKE proposal 1 encryption aes256
set vpn ipsec ike-group YC-IKE proposal 1 hash sha256

# Site-to-site между двумя VPC в Yandex Cloud
set vpn ipsec site-to-site peer 10.128.0.10 authentication mode pre-shared-secret
set vpn ipsec site-to-site peer 10.128.0.10 authentication pre-shared-secret 'YandexCloudVPNKey'
set vpn ipsec site-to-site peer 10.128.0.10 connection-type initiate
set vpn ipsec site-to-site peer 10.128.0.10 ike-group YC-IKE
set vpn ipsec site-to-site peer 10.128.0.10 local-address 10.129.0.10
set vpn ipsec site-to-site peer 10.128.0.10 tunnel 1 esp-group YC-ESP
set vpn ipsec site-to-site peer 10.128.0.10 tunnel 1 local prefix 10.129.1.0/24
set vpn ipsec site-to-site peer 10.128.0.10 tunnel 1 remote prefix 10.128.1.0/24

commit
save

Пример для VK Cloud (bare-metal с QAT)

На bare-metal серверах VK Cloud с поддержкой QAT используйте максимальную производительность:

configure

# ESP группа с ChaCha20-Poly1305 для максимальной производительности на QAT
set vpn ipsec esp-group VK-ESP-QAT lifetime 3600
set vpn ipsec esp-group VK-ESP-QAT mode tunnel
set vpn ipsec esp-group VK-ESP-QAT pfs dh-group14
set vpn ipsec esp-group VK-ESP-QAT proposal 1 encryption aes256gcm128
set vpn ipsec esp-group VK-ESP-QAT proposal 2 encryption aes256
set vpn ipsec esp-group VK-ESP-QAT proposal 2 hash sha256

# IKE группа
set vpn ipsec ike-group VK-IKE-QAT dead-peer-detection action restart
set vpn ipsec ike-group VK-IKE-QAT dead-peer-detection interval 15
set vpn ipsec ike-group VK-IKE-QAT dead-peer-detection timeout 60
set vpn ipsec ike-group VK-IKE-QAT ikev2-reauth no
set vpn ipsec ike-group VK-IKE-QAT key-exchange ikev2
set vpn ipsec ike-group VK-IKE-QAT lifetime 28800
set vpn ipsec ike-group VK-IKE-QAT proposal 1 dh-group 14
set vpn ipsec ike-group VK-IKE-QAT proposal 1 encryption aes256gcm128
set vpn ipsec ike-group VK-IKE-QAT proposal 1 hash sha256

# Site-to-site VPN между дата-центрами
set vpn ipsec site-to-site peer 185.185.185.10 authentication mode pre-shared-secret
set vpn ipsec site-to-site peer 185.185.185.10 authentication pre-shared-secret 'VKCloudBareMetal2025'
set vpn ipsec site-to-site peer 185.185.185.10 connection-type respond
set vpn ipsec site-to-site peer 185.185.185.10 ike-group VK-IKE-QAT
set vpn ipsec site-to-site peer 185.185.185.10 local-address 185.185.186.10
set vpn ipsec site-to-site peer 185.185.185.10 tunnel 1 esp-group VK-ESP-QAT
set vpn ipsec site-to-site peer 185.185.185.10 tunnel 1 local prefix 192.168.10.0/24
set vpn ipsec site-to-site peer 185.185.185.10 tunnel 1 remote prefix 192.168.20.0/24

# Включение QAT ускорения
set system acceleration qat

commit
save

AES-NI CPU Instructions

AES-NI (Advanced Encryption Standard New Instructions) - это набор инструкций процессора Intel и AMD для аппаратного ускорения операций AES-шифрования.

Проверка поддержки AES-NI

Для проверки, поддерживает ли процессор инструкции AES-NI, выполните:

show system cpu info

Пример вывода с поддержкой AES-NI:

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              4
Model name:          Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
CPU MHz:             2399.998
Hypervisor vendor:   KVM
Virtualization type: full
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
                     pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm
                     constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq
                     pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt
                     tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm
                     abm 3dnowprefetch invpcid_single pti fsgsbase tsc_adjust bmi1 hle
                     avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt arat

Флаг aes в списке Flags указывает на поддержку AES-NI.

Альтернативная проверка через командную строку:

run show cpu-info | grep aes

Ожидаемый вывод:

flags: ... aes ...

Автоматическое использование AES-NI

VyOS автоматически использует инструкции AES-NI, если они доступны на процессоре. Никакой дополнительной настройки не требуется.

Криптографические библиотеки (OpenSSL, strongSwan) автоматически определяют наличие AES-NI и используют аппаратное ускорение для:

  • AES-128-CBC, AES-192-CBC, AES-256-CBC
  • AES-128-CTR, AES-192-CTR, AES-256-CTR
  • AES-128-GCM, AES-192-GCM, AES-256-GCM
  • AES-128-CCM, AES-192-CCM, AES-256-CCM

Проверка использования AES-NI в OpenSSL

Для проверки производительности AES с и без аппаратного ускорения:

# Тест с аппаратным ускорением (по умолчанию)
openssl speed -evp aes-256-gcm

# Принудительное отключение AES-NI для сравнения
OPENSSL_ia32cap="~0x200000200000000" openssl speed -evp aes-256-gcm

Пример результатов с AES-NI:

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     285714.29k   857142.86k  2285714.29k  3657142.86k  4571428.57k  4685714.29k

Пример результатов без AES-NI (программная реализация):

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      71428.57k   214285.71k   571428.57k   914285.71k  1142857.14k  1171428.57k

Разница в производительности составляет примерно 4-5 раз в пользу AES-NI.

Тестирование производительности

Benchmark IPsec без QAT

Тестирование производительности IPsec-туннеля на процессоре Intel Atom C3558 без включения QAT:

# На одной стороне туннеля
iperf3 -s

# На другой стороне туннеля (через IPsec)
iperf3 -c 10.0.2.10 -t 60 -P 4

Результаты без QAT:

[ ID] Interval           Transfer     Bitrate         Retr
[SUM]   0.00-60.00  sec  1.89 GBytes   270 Mbits/sec  124    sender
[SUM]   0.00-60.00  sec  1.88 GBytes   269 Mbits/sec         receiver

CPU Usage: 85-95% (strongSwan процессы)

Benchmark IPsec с QAT

Включение QAT и повторное тестирование:

configure
set system acceleration qat
commit
save
exit

# Перезапуск IPsec для применения QAT
restart vpn ipsec

Повторный тест:

iperf3 -c 10.0.2.10 -t 60 -P 4

Результаты с QAT:

[ ID] Interval           Transfer     Bitrate         Retr
[SUM]   0.00-60.00  sec  5.45 GBytes   778 Mbits/sec   18    sender
[SUM]   0.00-60.00  sec  5.44 GBytes   777 Mbits/sec         receiver

CPU Usage: 25-35% (strongSwan процессы)

Улучшение производительности:

  • Пропускная способность: +188% (270 → 778 Mbps)
  • Загрузка CPU: -65% (90% → 30%)
  • Количество ретрансмиссий: -85% (124 → 18)

Сравнительная таблица алгоритмов

Производительность различных алгоритмов шифрования на Intel Atom C3558 с QAT (iperf3, 60 секунд):

АлгоритмБез QATС QATУлучшение
AES-128-CBC + SHA1320 Mbps850 Mbps+166%
AES-256-CBC + SHA256270 Mbps778 Mbps+188%
AES-128-GCM380 Mbps920 Mbps+142%
AES-256-GCM310 Mbps815 Mbps+163%
3DES-CBC + SHA1145 Mbps420 Mbps+190%
ChaCha20-Poly1305450 Mbps450 Mbps0% (не поддерживается QAT)

Рекомендации:

  • Для максимальной производительности с QAT используйте AES-128-GCM
  • Для баланса безопасности и производительности используйте AES-256-GCM
  • ChaCha20-Poly1305 имеет высокую программную производительность, но не ускоряется QAT

Мониторинг производительности в реальном времени

Для отслеживания использования QAT в реальном времени используйте скрипт мониторинга:

# Создание скрипта мониторинга
cat > /config/scripts/qat-monitor.sh << 'EOF'
#!/bin/bash

while true; do
    clear
    echo "QAT Performance Monitor - $(date)"
    echo "========================================"

    show system acceleration qat status
    echo ""
    echo "Flow Statistics:"
    show system acceleration qat device qat_dev0 flows | grep -E "(Operations|Throughput|Errors)"

    echo ""
    echo "CPU Usage:"
    top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print "CPU Load: " 100 - $1"%"}'

    echo ""
    echo "IPsec Tunnels:"
    show vpn ipsec sa | grep -E "(peer|State)"

    sleep 5
done
EOF

chmod +x /config/scripts/qat-monitor.sh

# Запуск мониторинга
/config/scripts/qat-monitor.sh

Проверка и диагностика

Комплексная проверка аппаратного ускорения

Выполните следующие команды для полной диагностики:

# 1. Проверка процессора и поддержки AES-NI
show system cpu info | grep -i aes

# 2. Проверка наличия QAT
show system acceleration qat

# 3. Статус QAT устройств
show system acceleration qat status

# 4. Конфигурация QAT (если доступен)
show system acceleration qat device qat_dev0 config

# 5. Счетчики криптографических операций
show system acceleration qat device qat_dev0 flows

# 6. Статус IPsec туннелей
show vpn ipsec sa

# 7. Загрузка процессора
show system processes

# 8. Версия драйвера QAT (из системы)
show version kernel

Проверка логов

Для выявления проблем с QAT проверьте системные логи:

# Логи загрузки QAT драйвера
show log kernel | grep -i qat

# Логи IPsec с отметками об использовании QAT
show log vpn ipsec | grep -i qat

# Общие системные логи
show log tail 100

Пример успешной инициализации QAT:

kernel: qat_c3xxx 0000:00:0b.0: enabling device (0000 -> 0002)
kernel: qat_c3xxx 0000:00:0b.0: Enabling MSI IRQ 24
kernel: qat_c3xxx 0000:00:0b.0: Successfully initialized qat_dev0
kernel: qat_c3xxx 0000:00:0b.0: qat_dev0 started 3 acceleration engines
kernel: QAT: Device qat_dev0 is ready for use

Пример ошибки QAT:

kernel: qat_c3xxx 0000:00:0b.0: Failed to initialize qat_dev0
kernel: qat_c3xxx 0000:00:0b.0: Firmware load failed
kernel: QAT: Device qat_dev0 is NOT available

Проверка криптографических библиотек

Проверка, что strongSwan (IPsec daemon) использует QAT:

# Проверка плагинов strongSwan
sudo ipsec statusall | grep -i plugin

# Список загруженных плагинов
sudo ipsec listplugins

Ожидаемый вывод при использовании QAT:

Loaded plugins: charon aes des rc2 sha2 sha1 md5 mgf1 random nonce x509
                revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12
                pgp dnskey sshkey pem openssl kernel-netlink socket-default
                stroke vici updown eap-identity addrblock unity qat

qat plugin loaded: yes

Тестирование отдельных алгоритмов

Для тестирования конкретных алгоритмов шифрования:

# Тест AES-256-GCM
openssl speed -elapsed -evp aes-256-gcm

# Тест AES-256-CBC
openssl speed -elapsed -evp aes-256-cbc

# Тест SHA256
openssl speed -elapsed sha256

# Сравнение с программной реализацией (отключение AES-NI)
OPENSSL_ia32cap="~0x200000200000000" openssl speed -elapsed -evp aes-256-gcm

Устранение неполадок

QAT не обнаружен

Проблема: Команда show system acceleration qat сообщает, что QAT недоступен.

Решение:

  1. Проверьте, поддерживает ли ваше оборудование QAT:

    lspci | grep -i quickassist
    lspci | grep -i co-processor
  2. Убедитесь, что QAT включен в BIOS:

    • Зайдите в BIOS/UEFI
    • Найдите раздел “Advanced” или “Chipset Configuration”
    • Включите опцию “Intel QuickAssist Technology”
  3. Проверьте загрузку драйвера:

    lsmod | grep qat
  4. Если модуль не загружен, попробуйте загрузить вручную:

    sudo modprobe qat_c3xxx
    sudo modprobe intel_qat

QAT устройство в состоянии “Down”

Проблема: show system acceleration qat status показывает устройство в состоянии “down”.

Решение:

  1. Проверьте логи ошибок:

    show log kernel | grep -i qat | grep -i error
    dmesg | grep -i qat | grep -i error
  2. Перезапустите QAT сервис:

    sudo systemctl restart qat
    # или
    sudo /etc/init.d/qat_service restart
  3. Обновите firmware QAT:

    # Проверка текущей версии
    show system acceleration qat status | grep Firmware
    
    # Обновление (зависит от платформы)
    # Обратитесь к документации производителя оборудования
  4. Проверьте температуру процессора:

    show hardware sensors

    Перегрев может вызывать отключение QAT.

IPsec не использует QAT

Проблема: QAT работает, но IPsec-туннели не показывают улучшения производительности.

Решение:

  1. Проверьте, что QAT включен в конфигурации:

    show configuration commands | grep acceleration
  2. Перезапустите IPsec после включения QAT:

    restart vpn ipsec
  3. Убедитесь, что используются поддерживаемые алгоритмы:

    show vpn ipsec sa detail

    Проверьте, что алгоритмы шифрования и хеширования из списка поддерживаемых QAT.

  4. Проверьте статистику QAT во время активной передачи данных:

    # Начните передачу данных через туннель
    # В другом окне мониторьте счетчики
    watch -n 1 'show system acceleration qat device qat_dev0 flows'

    Счетчики “Encryption Requests” и “Decryption Requests” должны расти.

Низкая производительность с QAT

Проблема: QAT включен, но производительность не соответствует ожиданиям.

Решение:

  1. Проверьте алгоритмы шифрования:

    • Используйте AES-GCM вместо AES-CBC + SHA
    • AES-GCM обеспечивает лучшую производительность на QAT
  2. Проверьте настройки DPD (Dead Peer Detection):

    • Слишком частые проверки могут снизить производительность
    • Рекомендуемые значения: interval 30, timeout 120
  3. Оптимизируйте сетевые параметры:

    configure
    set system option performance throughput
    commit
    save
  4. Проверьте MTU и MSS:

    # Проверка текущего MTU
    show interfaces ethernet eth0
    
    # Настройка оптимального MSS для IPsec
    configure
    set vpn ipsec site-to-site peer 203.0.113.10 tunnel 1 mtu 1400
    commit
    save
  5. Убедитесь, что не используется software offload:

    # Отключение software offloading, если включен
    configure
    delete system option performance
    set system acceleration qat
    commit
    save

Ошибки в логах QAT

Проблема: В логах появляются сообщения об ошибках QAT.

Решение:

  1. “qat_dev0: heartbeat failed”

    • Указывает на проблемы с firmware
    • Решение: Обновление firmware или перезагрузка системы
  2. “qat_dev0: ring buffer overflow”

    • QAT перегружен запросами
    • Решение: Увеличение числа QAT instances или распределение нагрузки
  3. “qat_dev0: uncorrectable error detected”

    • Аппаратная проблема
    • Решение: Проверка оборудования, возможно требуется RMA
  4. “Intel QAT: failed to allocate memory”

    • Недостаточно памяти для QAT операций
    • Решение: Увеличение системной памяти или уменьшение числа QAT instances

Проблемы с AES-NI

Проблема: AES-NI не обнаруживается или не используется.

Решение:

  1. Убедитесь, что процессор поддерживает AES-NI:

    grep -o 'aes' /proc/cpuinfo | uniq
  2. Проверьте, что AES-NI включен в BIOS:

    • В некоторых BIOS есть опция отключения AES-NI
    • Обычно находится в разделе “Security” или “Advanced CPU Configuration”
  3. В виртуальных машинах убедитесь, что флаг AES проброшен гостю:

    • VMware: Включите “Expose hardware assisted virtualization”
    • KVM/QEMU: Используйте CPU type “host-passthrough” или добавьте флаг “+aes”
    • Hyper-V: Используйте процессор с поддержкой AES-NI и включите вложенную виртуализацию
  4. Для Yandex Cloud - выберите тип ВМ с современным процессором:

    • Рекомендуется: Intel Ice Lake, Intel Cascade Lake
    • AES-NI доступен на всех типах ВМ, кроме устаревших

Лучшие практики

Выбор алгоритмов для максимальной производительности

С Intel QAT:

  1. Приоритет 1: AES-128-GCM

    • Лучшая производительность на QAT
    • Хорошая безопасность для большинства применений
    • Низкая задержка
  2. Приоритет 2: AES-256-GCM

    • Баланс производительности и безопасности
    • Рекомендуется для критичных данных
    • Незначительно медленнее AES-128-GCM
  3. Избегайте:

    • ChaCha20-Poly1305 (не поддерживается QAT)
    • 3DES (устаревший, медленный)
    • AES-CBC с отдельным HMAC (медленнее GCM)

Без QAT (только AES-NI):

  1. Приоритет 1: ChaCha20-Poly1305

    • Лучшая программная производительность
    • Хорошая безопасность
    • Не требует AES-NI
  2. Приоритет 2: AES-256-GCM

    • Хорошее ускорение через AES-NI
    • Широкая совместимость
  3. Приоритет 3: AES-256-CBC + SHA256

    • Консервативный выбор для максимальной совместимости

Настройка для различных сценариев

Высокая пропускная способность (bulk transfer):

configure
# Большой размер пакетов, минимум overhead
set vpn ipsec esp-group HIGH-THROUGHPUT lifetime 3600
set vpn ipsec esp-group HIGH-THROUGHPUT mode tunnel
set vpn ipsec esp-group HIGH-THROUGHPUT pfs disable
set vpn ipsec esp-group HIGH-THROUGHPUT proposal 1 encryption aes128gcm128
commit
save

Низкая задержка (real-time traffic):

configure
# Быстрые алгоритмы, частая смена ключей для безопасности
set vpn ipsec esp-group LOW-LATENCY lifetime 1800
set vpn ipsec esp-group LOW-LATENCY mode tunnel
set vpn ipsec esp-group LOW-LATENCY pfs dh-group14
set vpn ipsec esp-group LOW-LATENCY proposal 1 encryption aes128gcm64
set vpn ipsec ike-group LOW-LATENCY-IKE lifetime 14400
commit
save

Максимальная безопасность:

configure
# Сильные алгоритмы, частая смена ключей
set vpn ipsec esp-group MAX-SECURITY lifetime 1800
set vpn ipsec esp-group MAX-SECURITY mode tunnel
set vpn ipsec esp-group MAX-SECURITY pfs dh-group16
set vpn ipsec esp-group MAX-SECURITY proposal 1 encryption aes256gcm128
set vpn ipsec ike-group MAX-SECURITY-IKE lifetime 7200
set vpn ipsec ike-group MAX-SECURITY-IKE proposal 1 dh-group 16
set vpn ipsec ike-group MAX-SECURITY-IKE proposal 1 encryption aes256gcm128
commit
save

Мониторинг и обслуживание

Регулярный мониторинг QAT:

  1. Создайте скрипт ежедневной проверки состояния:
configure
set system task-scheduler task qat-daily-check executable path /config/scripts/qat-check.sh
set system task-scheduler task qat-daily-check interval 1d
commit
save
  1. Создайте сам скрипт проверки:
cat > /config/scripts/qat-check.sh << 'EOF'
#!/bin/bash

LOG_FILE="/var/log/qat-health.log"
DATE=$(date "+%Y-%m-%d %H:%M:%S")

echo "[$DATE] QAT Health Check" >> $LOG_FILE

# Проверка статуса
STATUS=$(show system acceleration qat status | grep "Active Devices")
echo "  $STATUS" >> $LOG_FILE

# Проверка ошибок
ERRORS=$(show system acceleration qat device qat_dev0 flows | grep "Errors:")
echo "  $ERROR S" >> $LOG_FILE

# Проверка производительности
OPS=$(show system acceleration qat device qat_dev0 flows | grep "Operations/sec")
echo "  $OPS" >> $LOG_FILE

# Алерт при обнаружении проблем
if echo "$ERRORS" | grep -v "Errors: 0" > /dev/null; then
    echo "  WARNING: QAT errors detected!" >> $LOG_FILE
    # Опционально: отправка уведомления
fi

echo "" >> $LOG_FILE
EOF

chmod +x /config/scripts/qat-check.sh

Проактивный мониторинг производительности:

# Использование SNMP для мониторинга (если настроен)
configure
set service snmp community public authorization ro
set service snmp community public network 10.0.0.0/8
commit
save

Мониторинг через внешние системы (Zabbix, Prometheus):

  • CPU Usage (OID: .1.3.6.1.4.1.2021.11)
  • Network throughput
  • IPsec tunnel status (custom scripts)

Резервное копирование и восстановление

Сохранение конфигурации с QAT:

# Backup текущей конфигурации
save /config/backup/config-with-qat-$(date +%Y%m%d).boot

# Копирование на удаленный сервер
scp /config/backup/config-with-qat-$(date +%Y%m%d).boot user@backup-server:/backups/vyos/

Восстановление после отказа QAT:

Если QAT оборудование вышло из строя:

configure
# Отключение QAT для продолжения работы на программной криптографии
delete system acceleration qat
commit
save

# Перезапуск IPsec
restart vpn ipsec

Производительность снизится, но связность будет сохранена.

Обновление firmware и драйверов

Обновление QAT firmware:

  1. Проверка текущей версии:

    show system acceleration qat status | grep Firmware
  2. Загрузка нового firmware с сайта производителя

  3. Установка (процедура зависит от платформы):

    # Пример для Intel Atom C3000 Series
    sudo qat_fwupdate -d qat_dev0 -f /path/to/new_firmware.bin
  4. Перезагрузка системы:

    reboot now

Обновление VyOS с сохранением QAT:

# Перед обновлением сохраните конфигурацию
save

# Добавьте новый образ VyOS
add system image <URL_to_new_image>

# После перезагрузки проверьте QAT
show system acceleration qat status

# Если QAT не работает, переустановите драйвер
# (обычно автоматически при загрузке нового ядра)

Безопасность

Рекомендации по безопасности при использовании QAT:

  1. Обновляйте firmware регулярно

    • Производители выпускают обновления безопасности
    • Проверяйте релиз-ноты на наличие CVE
  2. Мониторинг аномалий

    • Резкое падение производительности может указывать на атаку
    • Необычно высокий уровень ошибок QAT
  3. Логирование

    configure
    set system syslog global facility all level info
    set system syslog global facility security level warning
    commit
    save
  4. Ограничение доступа к статистике QAT

    • Статистика может раскрыть информацию о трафике
    • Ограничьте доступ к командам show через RBAC (если используется)

Дополнительные ресурсы

Официальная документация

Поддержка оборудования

Сообщество и поддержка

Инструменты тестирования

  • iperf3: Тестирование пропускной способности сети

    sudo apt install iperf3  # На тестовых машинах
  • OpenSSL: Бенчмаркинг криптографических операций

    openssl speed -evp aes-256-gcm
  • ping с большим размером пакета: Тест задержки

    ping -s 1400 -c 100 10.0.2.10

Заключение

Аппаратное ускорение криптографических операций в VyOS обеспечивает значительное повышение производительности для VPN и IPsec соединений. Intel QAT предоставляет наибольший прирост производительности (до 3х раз), в то время как AES-NI обеспечивает хорошее ускорение в виртуализированных средах и на процессорах без выделенных криптографических модулей.

Ключевые выводы

  1. Intel QAT - лучший выбор для высоконагруженных VPN-шлюзов на bare-metal серверах
  2. AES-NI - оптимальное решение для виртуализированных сред (Yandex Cloud, VK Cloud VMs)
  3. Алгоритмы AES-GCM обеспечивают лучшую производительность с аппаратным ускорением
  4. Регулярный мониторинг QAT необходим для обеспечения стабильной работы
  5. Резервная программная криптография обеспечивает работоспособность при отказе QAT

Рекомендуемая конфигурация

Для bare-metal с QAT (VK Cloud, dedicated):

  • Включите set system acceleration qat
  • Используйте AES-256-GCM с SHA256
  • Настройте мониторинг QAT
  • Регулярно обновляйте firmware

Для виртуализированных сред (Yandex Cloud):

  • Используйте AES-256-GCM (автоматическое использование AES-NI)
  • Выбирайте ВМ с современными процессорами
  • Рассмотрите ChaCha20-Poly1305 для лучшей программной производительности

Для гибридных сценариев:

  • Настройте оба алгоритма в порядке приоритета
  • Обеспечьте fallback на программную криптографию
  • Используйте одинаковые алгоритмы на обоих концах туннеля

Следуя рекомендациям из этого руководства, вы сможете максимально эффективно использовать аппаратное ускорение в VyOS и обеспечить высокую производительность вашей сетевой инфраструктуры.