技术背景
网络信息传输的可靠性、机密性和完整性要求日渐提升,HTTPS 协议已经广泛应用。HTTPS 的 SSL/TLS 协议涉及加解密、校验、签名等密码学计算,消耗较多 CPU 计算资源。因此 CPU 硬件厂商推出过多种加速卸载方案,如 AES-NI、QAT、KAE、ARMv8 安全扩展等。
业界软件生态在优化 HTTPS 的性能上也做了诸多探索(参考[1]),传统的软件优化方案有 Session 复用、OCSP Stapling、False Start、dynamic record size、TLS1.3、HSTS 等, 但软件层面的优化无法满足流量日益增长的速度,CPU 硬件加速成为业界一个通用的解决方案。
CPU 新特性
不久前发布的第三代英特尔®至强®可扩展处理器(代号 Ice Lake),单核性能提升 30%,整机算力提升 50% 以上(参考[9])。
ISA 指令集
在传统的 AES-NI 加速指令基础上,Ice Lake 新增了基于 Intel® Advanced Vector Extensions 512(Intel® AVX-512)的 Intel® Crypto Acceleration 特性,包括 Vector AES(VAES)、Integer Fused Multiply Add(IFMA 大数计算)、Galois Field New Instructions(GFNI)等(参考[2])。同时也补充支持了 SHA extension(SHA-NI),补足了上一代的 SHA256 性能短板。
(图 1/ Ice Lake 新增 Intel AVX512 指令集)
Multi-buffer
Multi-buffer 是一种集中批量请求进行并发处理的技术(参考[10])。应用软件通过异步 SSL 配合 multi-buffer library 使用 SIMD 向量指令(AVX/AVX2/AVX512)加速密码学计算。OpenSSL (BabaSSL,BoringSSL)、Nginx (Tengine)、DPDK Cryptodev、dm-crypt、ISA-L 等开源软件生态已部分支持。
(图 2/ Multi-buffer 配合 SIMD 加速)
龙蜥操作系统(Anolis OS)
阿里云操作系统通过龙蜥社区和 Intel 工程师合作(参考[2]),率先支持云上 Ice Lake CPU,输出了最新的指令加速特性(参考[10])。Ice Lake 单核 AES 性能加速 2.2 倍,达到上一代 Cascade Lake 的 3.4 倍。RSA 单核加速 4.9 倍,达到上一代的 5.1 倍。Tengine (Nginx)单核 SSL/TLS 握手性能相应地加速 3.1 倍,达到上一代的 3.2 倍。