6.1.2 系统安全场景的加解密加速方案
概述
如今,科技社会日益发展,互联网连接万物,生活中的方方面面都离不开网络。尤其是近年来发展迅猛的移动互联网,让人们的生 产生活方式发生了翻天覆地的变化,也从侧面证明网络在给我们日常生活提供便利的同时,需要更关注安全。介于安全与性能需兼 顾的需求,龙蜥操作系统基于芯片新特性制定了加解密加速方案。
在网站访问过程中,HTTPS使用到SSL/TLS加解密过程。
场景挑战
我们知道密码学是为了保证信息的可靠性、机密性和完整性。密码学计算包括加解密、校验、签名等计算,消耗较多CPU资源。因此各硬件厂商推出过不少加速卸载方案:
Intel在Leiwsburg PCH推出QAT,用于密码学和解压缩offload;
ARM KP920推出的KAE加速卡,封装在CPU die,作为PCIe设备交互;
ARMv8.0加入了crypto extension通过SIMD指令加速密码学计算;
云厂商Cloud HSM服务使用的SSl/TLS专用offload方案。
方案特色
不久前Intel发布了第三代英特尔® 至强® 可扩展处理器(代号Ice Lake),单核性能提升30%,整机算力提升50%以上。龙蜥操作系统(Anolis OS)和Intel深入合作,输出加速特性,进一步提升性能和效率。
新增指令集:在传统的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 NewInstructions (GFNI) 等。通过multi-buffer lib配合,加速AES, RSA, EC等密码学计算,可用于OpenSSL (BabaSSL), Nginx(Tengine), DPDK Cryptodev, CDN, dm-crypt, ISA-L等。
此外,Ice Lake补充支持了SHA extension (SHA-NI),补足了前代Cascade Lake和Skylake的SHA256性能短板。结合Intel AVX512的vpternlog三元逻辑运算指令,进一步减少SHA256中一半的vpxor/XOR指令,可以达到和AMD Rome持平的单核SHA256性能。
加速软件栈:受益于以往的QAT方案,OpenSSL (BabaSSL, BoringSSL), Nginx (Tengine), DPDK, Envoy等主流软件已经支持 offload SSL/TLS加速。Intel® Crypto Acceleration方案沿用和扩展了QAT的软件框架QAT Engine,使之从专用的硬件offload卡场 景扩展到了通用的CPU指令加速场景,极大扩展了适用范围。
接下来我们详细对比各个方案的加速软件栈。
General CPU path:通用的CPU计算是最常见的SSL/TLS handshake软件栈,性能取决于libcrypto里对应的密码学算法在各型号 CPU上的计算性能和效率。
Ice Lake acceleration path:Ice Lake的Intel® Crypto Acceleration方案,从QAT软件栈演进而来,区别是底层改用multi-buffer lib中的Ice Lake加速指令进行密码学计算,不需要QAT PCIe设备,对应的驱动中断、系统调用、CPU内存消耗、硬件维护也可 以省略。
相对于默认的同步模式软件栈,Ice Lake加速软件栈和QAT一样需要异步SSL集中批量请求,通过multi-buffer lib配合Intel AVX512 指令的并行计算实现加速。因此Ice Lake加速软件栈会更长,但相对QAT软件栈更短。RSA大数计算消耗大量CPU,超过了SSL/TLS handshake全栈耗时的一半,异步SSL加速很有必要,也是典型的异步优化场景。
QAT PCIe offload path:QAT软件栈是Skylake上推出的SSL/TLS加速方案,经过演进派生出了上面的Ice Lake CPU加速方案。两种 方案都基于QAT Engine,区别在底层是用CPU加速还是PCIe设备。例如Tengine已经支持QAT,则也支持Ice Lake加速,类似的还有 Envoy, DPDK, ZFS,QZFS只用了QAT的解压缩加速)等。
QAT硬件集成在PCH主板(Lewisburg和Lewisburg refresh),或者作为独立的PCIe AIC卡。支持Ice Lake, Cascade Lake, Skylake 三代服务器平台,和部分Intel Atom® C Series, Intel Xeon® D Series的专用SoC平台。下一代产品按照目前的规划会作为加速器集成 封装到CPU die,从系统看还是PCIe设备。
同样可以用bpftrace分析QAT软件栈的处理流程和各阶段的latency分布。由于需要专用的QAT硬件平台,此处略过。 总的来说,QAT是专用的PCIe offload设备,可以协助CPU处理密码学和解压缩的大量计算消耗,释放CPU资源。但和所有PCIe设备 一样需要专用的系统驱动、CPU内存消耗和硬件维护。QAT软件栈和延迟较长,计算能力上限也受系统和PCIe限制。Ice Lake强化了 密码学计算能力,且同时支持QAT。CPU资源也比QAT更易获取和可扩展。
《2022龙蜥社区全景白皮书》——06 “龙蜥+”精选方案与案例——6.1 精选典型方案——6.1.3 资源混部场景的内核隔离实现方案(下) https://developer.aliyun.com/article/1229075