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
saveAES-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 + SHA1 | 320 Mbps | 850 Mbps | +166% |
| AES-256-CBC + SHA256 | 270 Mbps | 778 Mbps | +188% |
| AES-128-GCM | 380 Mbps | 920 Mbps | +142% |
| AES-256-GCM | 310 Mbps | 815 Mbps | +163% |
| 3DES-CBC + SHA1 | 145 Mbps | 420 Mbps | +190% |
| ChaCha20-Poly1305 | 450 Mbps | 450 Mbps | 0% (не поддерживается 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 недоступен.
Решение:
Проверьте, поддерживает ли ваше оборудование QAT:
lspci | grep -i quickassist lspci | grep -i co-processorУбедитесь, что QAT включен в BIOS:
- Зайдите в BIOS/UEFI
- Найдите раздел “Advanced” или “Chipset Configuration”
- Включите опцию “Intel QuickAssist Technology”
Проверьте загрузку драйвера:
lsmod | grep qatЕсли модуль не загружен, попробуйте загрузить вручную:
sudo modprobe qat_c3xxx sudo modprobe intel_qat
QAT устройство в состоянии “Down”
Проблема: show system acceleration qat status показывает устройство в состоянии “down”.
Решение:
Проверьте логи ошибок:
show log kernel | grep -i qat | grep -i error dmesg | grep -i qat | grep -i errorПерезапустите QAT сервис:
sudo systemctl restart qat # или sudo /etc/init.d/qat_service restartОбновите firmware QAT:
# Проверка текущей версии show system acceleration qat status | grep Firmware # Обновление (зависит от платформы) # Обратитесь к документации производителя оборудованияПроверьте температуру процессора:
show hardware sensorsПерегрев может вызывать отключение QAT.
IPsec не использует QAT
Проблема: QAT работает, но IPsec-туннели не показывают улучшения производительности.
Решение:
Проверьте, что QAT включен в конфигурации:
show configuration commands | grep accelerationПерезапустите IPsec после включения QAT:
restart vpn ipsecУбедитесь, что используются поддерживаемые алгоритмы:
show vpn ipsec sa detailПроверьте, что алгоритмы шифрования и хеширования из списка поддерживаемых QAT.
Проверьте статистику QAT во время активной передачи данных:
# Начните передачу данных через туннель # В другом окне мониторьте счетчики watch -n 1 'show system acceleration qat device qat_dev0 flows'Счетчики “Encryption Requests” и “Decryption Requests” должны расти.
Низкая производительность с QAT
Проблема: QAT включен, но производительность не соответствует ожиданиям.
Решение:
Проверьте алгоритмы шифрования:
- Используйте AES-GCM вместо AES-CBC + SHA
- AES-GCM обеспечивает лучшую производительность на QAT
Проверьте настройки DPD (Dead Peer Detection):
- Слишком частые проверки могут снизить производительность
- Рекомендуемые значения: interval 30, timeout 120
Оптимизируйте сетевые параметры:
configure set system option performance throughput commit saveПроверьте 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Убедитесь, что не используется software offload:
# Отключение software offloading, если включен configure delete system option performance set system acceleration qat commit save
Ошибки в логах QAT
Проблема: В логах появляются сообщения об ошибках QAT.
Решение:
“qat_dev0: heartbeat failed”
- Указывает на проблемы с firmware
- Решение: Обновление firmware или перезагрузка системы
“qat_dev0: ring buffer overflow”
- QAT перегружен запросами
- Решение: Увеличение числа QAT instances или распределение нагрузки
“qat_dev0: uncorrectable error detected”
- Аппаратная проблема
- Решение: Проверка оборудования, возможно требуется RMA
“Intel QAT: failed to allocate memory”
- Недостаточно памяти для QAT операций
- Решение: Увеличение системной памяти или уменьшение числа QAT instances
Проблемы с AES-NI
Проблема: AES-NI не обнаруживается или не используется.
Решение:
Убедитесь, что процессор поддерживает AES-NI:
grep -o 'aes' /proc/cpuinfo | uniqПроверьте, что AES-NI включен в BIOS:
- В некоторых BIOS есть опция отключения AES-NI
- Обычно находится в разделе “Security” или “Advanced CPU Configuration”
В виртуальных машинах убедитесь, что флаг AES проброшен гостю:
- VMware: Включите “Expose hardware assisted virtualization”
- KVM/QEMU: Используйте CPU type “host-passthrough” или добавьте флаг “+aes”
- Hyper-V: Используйте процессор с поддержкой AES-NI и включите вложенную виртуализацию
Для Yandex Cloud - выберите тип ВМ с современным процессором:
- Рекомендуется: Intel Ice Lake, Intel Cascade Lake
- AES-NI доступен на всех типах ВМ, кроме устаревших
Лучшие практики
Выбор алгоритмов для максимальной производительности
С Intel QAT:
Приоритет 1: AES-128-GCM
- Лучшая производительность на QAT
- Хорошая безопасность для большинства применений
- Низкая задержка
Приоритет 2: AES-256-GCM
- Баланс производительности и безопасности
- Рекомендуется для критичных данных
- Незначительно медленнее AES-128-GCM
Избегайте:
- ChaCha20-Poly1305 (не поддерживается QAT)
- 3DES (устаревший, медленный)
- AES-CBC с отдельным HMAC (медленнее GCM)
Без QAT (только AES-NI):
Приоритет 1: ChaCha20-Poly1305
- Лучшая программная производительность
- Хорошая безопасность
- Не требует AES-NI
Приоритет 2: AES-256-GCM
- Хорошее ускорение через AES-NI
- Широкая совместимость
Приоритет 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:
- Создайте скрипт ежедневной проверки состояния:
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- Создайте сам скрипт проверки:
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:
Проверка текущей версии:
show system acceleration qat status | grep FirmwareЗагрузка нового firmware с сайта производителя
Установка (процедура зависит от платформы):
# Пример для Intel Atom C3000 Series sudo qat_fwupdate -d qat_dev0 -f /path/to/new_firmware.binПерезагрузка системы:
reboot now
Обновление VyOS с сохранением QAT:
# Перед обновлением сохраните конфигурацию
save
# Добавьте новый образ VyOS
add system image <URL_to_new_image>
# После перезагрузки проверьте QAT
show system acceleration qat status
# Если QAT не работает, переустановите драйвер
# (обычно автоматически при загрузке нового ядра)Безопасность
Рекомендации по безопасности при использовании QAT:
Обновляйте firmware регулярно
- Производители выпускают обновления безопасности
- Проверяйте релиз-ноты на наличие CVE
Мониторинг аномалий
- Резкое падение производительности может указывать на атаку
- Необычно высокий уровень ошибок QAT
Логирование
configure set system syslog global facility all level info set system syslog global facility security level warning commit saveОграничение доступа к статистике QAT
- Статистика может раскрыть информацию о трафике
- Ограничьте доступ к командам show через RBAC (если используется)
Дополнительные ресурсы
Официальная документация
- VyOS Documentation: https://docs.vyos.io/
- Intel QAT Documentation: https://www.intel.com/content/www/us/en/architecture-and-technology/intel-quick-assist-technology-overview.html
- Intel QAT Software: https://github.com/intel/QAT_Engine
- strongSwan QAT Plugin: https://wiki.strongswan.org/projects/strongswan/wiki/QAT
Поддержка оборудования
- Intel Atom C3000 Series: https://ark.intel.com/content/www/us/en/ark/products/series/95217/intel-atom-processor-c3000-series.html
- Intel Xeon Scalable Processors: https://www.intel.com/content/www/us/en/products/docs/processors/xeon/xeon-scalable-processors.html
Сообщество и поддержка
- VyOS Community Forum: https://forum.vyos.io/
- VyOS Slack: https://slack.vyos.io/
- Yandex Cloud Support: https://cloud.yandex.ru/docs/support/
- VK Cloud Support: https://mcs.mail.ru/help/
Инструменты тестирования
iperf3: Тестирование пропускной способности сети
sudo apt install iperf3 # На тестовых машинахOpenSSL: Бенчмаркинг криптографических операций
openssl speed -evp aes-256-gcmping с большим размером пакета: Тест задержки
ping -s 1400 -c 100 10.0.2.10
Заключение
Аппаратное ускорение криптографических операций в VyOS обеспечивает значительное повышение производительности для VPN и IPsec соединений. Intel QAT предоставляет наибольший прирост производительности (до 3х раз), в то время как AES-NI обеспечивает хорошее ускорение в виртуализированных средах и на процессорах без выделенных криптографических модулей.
Ключевые выводы
- Intel QAT - лучший выбор для высоконагруженных VPN-шлюзов на bare-metal серверах
- AES-NI - оптимальное решение для виртуализированных сред (Yandex Cloud, VK Cloud VMs)
- Алгоритмы AES-GCM обеспечивают лучшую производительность с аппаратным ускорением
- Регулярный мониторинг QAT необходим для обеспечения стабильной работы
- Резервная программная криптография обеспечивает работоспособность при отказе 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 и обеспечить высокую производительность вашей сетевой инфраструктуры.