Alexander Sheiko Blog

Squid CPU Load - OpenSSL vs LibreSSL

Категория: Компьютерное
Отправлено: 17.10.2021 00:51

https://adsh.org.ua/blog/upload/squid.jpg

Замена Squid 3.5.28 + LibreSSL 2.7.4 на Squid 4.15 + OpenSSL 1.1.1, в такой же конфигурации, привела к снижению загрузки процессора, примерно в 4 раза:

https://adsh.org.ua/blog/upload/OpenSSL_1.1.1_vs_LibreSSL_2.7.4.png

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

По видимому, уменьшение загрузки процессора нельзя объяснить лишь использованием, в части запросов, нового протокола шифрования TLS 1.3 - основной вклад даёт более быстрая реализация работы в OpenSSL. О скорости загрузки сайтов, в аспекте TLS 1.2 vs TLS 1.3, можно почитать здесь.

Напомню, что Squid 3.5 не поддерживает OpenSSL 1.1.1 - пришлось обновить и его версию. С предыдущими же версиями OpenSSL, в режиме прозрачного проксирования HTTPS, Squid 3.5 работал нестабильно, с различными глюками. Рекомендовалось использовать LibreSSL второй версии - она обеспечивала стабильность в работе. С третьей же версией LibreSSL (имеющей поддержку TLS 1.3), Squid 3.5 уже не собирался, как и с OpenSSL 1.1.1.

Что касается сравнения производительности OpenSSL / LibreSSL, именно на операциях шифровании, удалось найти такие данные:

AES Performance per CPU core for TLS v1.2 Ciphers
(Intel i5-6500, Higher is Better, Speeds in Megabytes per Second)

ChaCha20 AES-128-GCM AES-256-GCM AES-128-CBC AES-256-CBC Total Score
2762 4900 3554 1067 780 = 13063 OpenSSL v1.1.1a
410 1729 1520 1078 783 = 5520 LibreSSL v3.0.1

The server has a moderately powerful CPU with AES-NI enabled in the BIOS. The machine is setup with an Intel i5-6500 CPU, FreeBSD 11, with LibreSSL v3.0.1 and OpenSSL v1.1.1a built from source. The results show that OpenSSL is between 2.3x to 6.7x times faster than LibreSSL using ChaCha20 as well as AES-128-GCM and AES-256-GCM.

В случае отсутствия аппаратного ускорения шифрования, цифры будут такими (сервер, что с прокси):

CPU: Intel(R) Core(TM)2 Quad CPU Q9650 @ 3.00GHz
OpenSSL 1.1.1l 24 Aug 2021

type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
chacha20 126579.38k 250211.15k 294144.77k 307674.11k 311448.92k 311989.59k
aes-128-gcm 42840.45k 49646.63k 51664.90k 52266.33k 52551.36k 52865.71k
aes-256-gcm 36074.82k 40765.23k 42148.18k 42515.11k 42686.58k 42871.47k

У кого в веб серверах используются процессоры, без аппаратного ускорения шифрования, принудительно ставьте на первое место шифры ChaCha20. В случае Апаче, это прописывается следующим образом:

SSLCipherSuite ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384
SSLProxyCipherSuite ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384

SSLCipherSuite TLSv1.3 TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384
SSLProxyCipherSuite TLSv1.3 TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384

SSLHonorCipherOrder on

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLProxyProtocol all -SSLv3 -TLSv1 -TLSv1.1

Более подробную информацию можно найти здесь.
Постоянная ссылка Комментарии (0)
Powered by sBLOG XHTML 1.0 Strict PHP CSS
Локальное время: 04.12.2021 17:55 GMT+2
© 2005-2021 Alexander Sheiko