您现在的位置是:电脑教程 >>正文
TLS 加速技术:Intel QuickAssist Technology(QAT)解决方案
电脑教程66人已围观
简介一、背景当前 TLS 已经成为了互联网安全的主要传输协议,TLS带来更高的安全性的同时,也带来了更多的性能开销。特别是在建连握手阶段,TLS的CPU开销,相对于TCP要大很多。业界在优化TLS性能上已 ...

一 、加解决背景
当前 TLS 已经成为了互联网安全的速技术主要传输协议,TLS带来更高的加解决安全性的同时 ,也带来了更多的速技术性能开销。特别是加解决在建连握手阶段 ,TLS的速技术CPU开销,相对于TCP要大很多。加解决
业界在优化TLS性能上已经做了很多软件和协议层面的速技术优化 ,包括:Session 复用、加解决OCSP Stapling、建站模板速技术TLS1.3等。加解决然而在摩尔定律"失效"的速技术今日 ,软件层面的加解决优化很难满足日益增长的流量,使用专用的速技术硬件技术卸载CPU计算成为目前通用的解决方案 。本文将介绍Intel在TLS加速领域提供的加解决QAT技术方案 。
二 、Intel QuickAssist Technology(QAT)技术方案
Intel 提供了TLS异步加速的完整解决方案: Intel QuickAssist Technology(QAT) ,简称Intel QAT技术。
如下图所示,模板下载QAT 支持加速的密码算法覆盖了TLS的整个流程 ,包括 :握手阶段的签名、秘钥交换算法,数据传输的AES加解密算法等。

图1. QAT 对TLS流程的密码算法的支持(图片来源)
QAT提供了对称与非对称两类密码算法的支持,主要包括:
非对称加密算法:RSA, ECDSA, ECDHE对称加密算法:AES-GCM(128,192,256)注:QAT加速的优势主要体现在非对称加密上 ,从官方的整体性能数据看 ,源码库非对称算法性能提升1.6~2倍 ,对称算法性能提升10%~15%
2.1 QAT Engine 软件栈QAT Engine 是QAT技术方案的核心模块 ,主要的作用是作为应用程序和硬件之间的中间层,负责 “加解密操作的输入输出数据” 在用户应用程序与硬件卡之间进行传递 ,主要操作就是IO的读写。
QAT Engine 是以 OpenSSL 第三方插件的方式提供给用户,香港云服务器这个意味用户可以使用 OpenSSL 标准的API,就可以实现对TLS的加速 ,只需要对原有代码做OpenSSL异步改造 ,就可以享受QAT技术带来的TLS性能加速,业务侵入性较小 。

图2. Intel QAT Engine 软件栈(图片来源)
如上图所示,QAT Engine 支持两种加速方式
软件加速(qat_sw) :使用 Multi-Buffer (SIMD)技术 ,对密码算法进行并行处理优化硬件加速(qat_hw):使用QAT硬件加速卡,将密码算法计算从CPU OffLoad到硬件加速卡下面将介绍软件和硬件两种加速路径的实现方式。
三 、软件加速:采用 Intel Multi-Buffer 技术
Intel 从 whitely 平台开始加入了新的指令集,源码下载结合intel Multi-Buffer技术,实现对密码算法的SIMD优化方案 。
3.1 Intel Multi-Buffer 技术Intel Multi-buffer 基本原理就是使用CPU的SIMD机制 ,通过 AVX-512 指令集并行处理数据,来提升RSA/ECDSA算法性能。
SIMD (Single Instruction Multiple Data) 即单指令流多数据流 ,是一种采用一个控制器来控制多个处理器,同时对一组数据(又称“数据向量”)中的每一个分别执行相同的操作从而实现空间上的并行性的技术。云计算简单来说就是一个指令能够同时处理多个数据Multi-Buffer 技术基于SIMD AVX-512指令集 ,通过队列和批量提交策略,结合OpenSSL的异步能力,每次可以最多并行处理8个密码算法操作Intel 的 Multi-Buffer 方案,实际上是对应Intel两个开源工程(Multi Buffer技术实现的通用密码算法底层lib库) ,集成在 QAT Engine 里,从而实现软件加速。

图3. Intel Engine集成了基于Multi-Buffer技术的密码算法lib
1、IP SEC lib
提供了multi-buffer 技术优化的对称加解密算法 ,如:AES-GCM开源项目:https://github.com/intel/intel-ipsec-mb2、IPP CRYPTO lib
提供了multi-buffer 技术优化的RSA/EDCSA/EDCHE算法接口,基于 Intel® Advanced Vector Extensions 512 (Intel® AVX-512) integer fused multiply-add (IFMA) 指令实现SIMD优化开源项目 :
https://github.com/intel/ippcrypto/tree/develop/sources/ippcp/crypto_mb简而言之,QAT的软件加速的本质就是通过 AVX-512 指令集进行并行处理优化 ,针对并发场景性能有显著提升(下文有针对Mult-Buffer优化场景的性能测试)。
四、 硬件加速:采用QAT硬件加速卡卸载
除了通过Multi-Buffer技术进行软件加速外 ,QAT Engine 还支持QAT硬件加速卡,通过将密码算法的计算卸载(OffLoad)到硬件加速卡,实现性能加速。
硬件加速核心是将TLS中的非对称加解密操作剥离出来,放到硬件加速卡里计算 ,即解放了CPU ,同时专用的硬件加速卡也提供了更高的加解密性能 ,这是典型的硬件OffLoad技术方案。
下图为典型的 Nginx+ Intel QAT Software Stack + QAT硬件加速卡的典型应用场景 :

图4. nginx+ Intel QAT Software Stack + QAT硬件加速卡的典型应用场景(图片来源)
这个典型应用场景包括四个部分:
Nginx (Async Mode): Intel 基于官方nginx(version 1.18)提供了patch ,支持nginx工作在openssl的异步模式。
Patch开源在 :
https://github.com/intel/asynch_mode_nginxOpenSSL(支持Async Mode): OpenSSL-1.1.1 新增了async mode 特性 ,应用层软件可以通过标准的openssl接口,实现异步调用 ,提升性能 。QAT Engine: OpenSSL Engine 插件 。向下和QAT API交互,将处理请求提交给硬件。
详见项目开源地址:
https://github.com/intel/QAT_EngineQAT Driver