一、背景
当前 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)技术,对密码算法进行并行处理优化
-