1. 首页 > 快讯

TLS 加速技术:Intel QuickAssist Technology(QAT)解决方案-51CTO.COM

老铁们,大家好,相信还有很多朋友对于TLS 加速技术:Intel QuickAssist Technology(QAT)解决方案-51CTO.COM和的相关问题不太懂,没关系,今天就由我来为大家分享分享TLS 加速技术:Intel QuickAssist Technology(QAT)解决方案-51CTO.COM以及的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

二、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引擎是QAT技术方案的核心模块。它的主要功能是充当应用程序和硬件之间的中间层。它负责在用户应用程序和硬件卡之间传输“加密和解密操作的输入和输出数据”。主要操作是IO读写。

QAT Engine 作为OpenSSL 第三方插件提供给用户。这意味着用户可以使用OpenSSL标准API来加速TLS。他们只需要对原始代码进行OpenSSL异步改造,就可以享受QAT技术带来的好处。 TLS性能加速,业务侵入更少。

图2. 英特尔QAT 引擎软件堆栈()

如上图所示,QAT Engine支持两种加速方式

软件加速(qat_sw):使用多缓冲区(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技术的加密算法库

1、IP SEC lib提供多缓冲区技术优化的对称加解密算法,如: AES-GCM 开源项目:https://github.com/intel/intel-ipsec-mb2、IPP CRYPTO lib提供多缓冲区优化的RSA/EDCSA/技术EDCHE算法接口,基于英特尔高级矢量扩展512(英特尔AVX-512)整数融合乘加(IFMA)指令实现SIMD优化开源项目:

https://github.com/intel/ippcrypto/tree/develop/sources/ippcp/crypto_mb 简而言之,QAT 的软件加速本质是通过AVX-512 指令集来优化并行处理,显着提升并发场景的性能(见下图) )多缓冲区优化场景的性能测试)。

四、硬件加速:采用QAT硬件加速卡卸载

除了通过Multi-Buffer技术进行软件加速外,QAT Engine还支持QAT硬件加速卡,通过将密码算法的计算卸载到硬件加速卡来实现性能加速。

硬件加速核心是将TLS中的非对称加解密操作剥离出来,放入硬件加速卡中进行计算,从而解放了CPU。同时,专用的硬件加速卡还提供了更高的加解密性能。这是典型的硬件OffLoad技术方案。

下图是Nginx+Intel QAT软件栈+QAT硬件加速卡的典型应用场景:

图4. nginx+Intel QAT软件栈+QAT硬件加速卡的典型应用场景()

这个典型的应用场景包括四个部分:

Nginx (Async Mode): Intel基于官方nginx(版本1.18)提供了补丁,支持nginx工作在openssl的异步模式下。

补丁开源于:

https://github.com/intel/asynch_mode_nginxOpenSSL(支持Async Mode): OpenSSL-1.1.1 添加了异步模式功能。应用层软件可以通过标准的openssl接口实现异步调用,以提高性能。QAT Engine: OpenSSL 引擎插件。与QAT API向下交互,向硬件提交处理请求。

详情请参见项目开源地址:

https://github.com/intel/QAT_EngineQAT Driver:QAT 加速卡驱动程序。它分为两部分:用户态和内核态。用户态lib库提供QAT API,内核态驱动直接与QAT硬件加速卡交互。 Intel QAT 依赖于OpenSSL 的两个功能:OpenSSL 异步模式和OpenSSL 引擎。

OpenSSL Async Mode可以在async_job执行过程中让CPU出去等待加速卡结果;如果没有开启async模式,调用openssl函数会阻塞,CPU会阻塞等待。OpenSSL Engine提供自定义注册加解密方法。您可以指定第三方加解密库,而不是使用OpenSSL自带的加解密库。基于这两个特性,应用程序的加解密操作只需要继续使用相同的openssl api,并且只需要兼容异步模式即可。另外,您可以在调用OpenSSL API时只指定引擎QAT。您可以使用QAT卡来加速加密和解密,而无需进行任何额外的修改。

4.1 OpenSSL 的Async Mode特性

从上面的介绍我们可以看出,QAT卡的本质就是将原本由CPU执行的部分计算转移到QAT卡上。因此,提高QAT的利用率,减少CPU的切换开销和等待时间,才是最好的性能核心工作。

当OpenSSL没有启用异步ASYNC模式时,OpenSSL会同步调用block,直到QAT_Engine返回结果。如下图同步模式所示,在执行流并发处理的场景下,大量CPU处于空闲等待状态(图中虚线表示CPU处于空闲状态), CPU无法得到有效利用。

图5. QAT_Engine + OpenSSL同步模式()

OpenSSL开启异步ASYNC模式后,OpenSSL调用是非阻塞的。如下图的异步模式,调用openssl不需要等待QAT_engine处理完成,可以有效利用CPU,提高QAT利用率,提高并发处理性能。

图6. QAT_Engine + OpenSSL异步模式()

通过对比OpenSSL的同步和异步模式,我们可以看到OpenSSL-1.1.1新增的异步Async特性支持异步非阻塞调用,提高了QAT的利用率,可以显着提升加解密性能。

4.2QAT Engine ASYNC运行流程

接下来还有一个问题,CPU怎么知道QAT卡已经完成计算了?

为了实现并行性,Async 模块在单线程中实现协程(异步作业)。加密和解密操作被抽象为作业。多个作业同时运行并使用协程进行调度。

在异步作业执行期间,当计算操作提交到QAT卡时,CPU可以暂停当前任务、切换上下文(保存/恢复堆栈、寄存器等)并返回到用户模式。

用户态需要主动轮询这个异步作业的状态,看是否处于ASYNC_FINISHED状态。如果是,则说明前面的任务已经完成,可以继续后续操作(获取加解密结果)。

注:QAT引擎通过轮询的方式获取QAT卡的计算状态。基本原理是启动一个线程,不断调用qatdriver的轮询api,通过轮询获取qat的计算状态。获取到相应结果后,写入eventfd,唤醒异步作业。

图7. QAT引擎ASYNC运行流程()

如上图所示,QAT Engine Async的基本流程为:

主要工作调用SSL_accept 并等待TLS 客户端发起TLS 握手。 SSL内部组织了一个状态机,将握手、读写操作抽象为ssl_io_intern(读写)、ssl_do_handshake_intern(握手)两个作业,通过API ASYNC_start_job()统一进行作业调度。这里启动了一个握手工作协程。当握手作业执行RSA_sign签名操作时,签名算法被卸载到硬件进行计算。调用ASYNC_pause_job()切换回主作业,并将作业状态设置为ASYNC_PAUSE。此时CPU会返回主作业进行其他计算,QAT会并行执行自己的计算。主作业通过SSL_waiting_for_async()接口获取eventfd,并对eventfd进行epoll。当QAT卡计算完成后,会执行回调并写入eventfd,通知主作业计算已完成。主要工作切换回握手工作。完成握手作业的剩余流程后,调用ASYNC_pause_job()切换主作业,将作业状态设置为ASYNC_FINISH,并结束协程完成握手动作。

五、QAT 性能评测

通过上面的介绍,我们了解了QAT技术方案的基本原理。我们来看看QAT的实际加速效果。

QAT Multi-Buffer 加速解决方案依赖于OpenSSL、QAT Engine、ipp-crypto 和Intel-ipsec-mb 软件堆栈,这些都是开源项目。我们可以轻松地使用openssl极速原生加解密算法来进行Multi-Buffer方案的性能评估。

硬件环境英特尔(R)Xeon(R)Platinum 8369B CPU @ 2.70GHZCPU(S): 8软件环境Linux kernel3: 4.19.91-24.1.x86_64ope 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1 gcc(gcc)8。3.0cmake3.0cmake 3.15.155nasm版本3.155nasm版本版本3.155 NASM版本版本版本版本版本3.155 NASM版本.05gnu Binutils 2.32 安装qat引擎安装IPP-CRYPTO、Intel-IPSEC-MB开源LIB库测试数据Numactl-C 0./opensl SPEED RSA20488888888888888888888888888888888888888888888888888888 88888888888888NMACTL -C 0.PENSSL -engine Qatengine -Async_jobs 8 RSA2048

numactl -C 0 ./openssl 速度ecdhp384numactl -C 0 ./openssl 速度-engine qatengine -async_jobs 8 ecdhp384

numactl -C 0 ./openssl 速度aes-256-cbcnumactl -C 0 ./openssl 速度-engine qatengine -async_jobs 8 aes-256-cbc

TLS 握手阶段的签名和密钥交换算法

RSA 2048签名/验证提高4.9/2.9倍ECDH密钥交换提高12倍对称加解密算法

AES-256-CBC 性能持平。从性能测试结果来看,QAT的加速优势在于TLS握手阶段的签名和密钥交换算法,适合频繁建立TLS连接的应用场景,如nginx网关、长连接网关等。

六、总结

最后我们来讨论一下Intel QAT技术的优缺点和应用场景:

6.1 优点和缺点

主要的优点高性能:可以显着提高计算密集型任务的性能,减轻CPU的负载,提高系统吞吐量和响应速度。低功耗:计算密集型任务可以卸载到专用硬件,降低系统功耗并提高能源效率。主要的缺点成本较高:需要额外的硬件支持,增加系统成本。应用范围受限:主要适用于计算密集型任务,对于其他类型的任务可能没有明显的性能提升。不支持所有处理器:仅支持特定系列的Intel处理器,需要特定的硬件和软件支持。改造成本高:应用需要进行QAT异步改造,需要一定的学习成本和技术支持。

6.2 应用场景

除了加解密算法外,Intel QAT还支持压缩解压、随机数生成、数字签名、视频编解码等算法。 Intel QAT主要可用于以下场景:

用户评论

百合的盛世恋

这篇文章真是太棒了!我一直对 TLS 加速技术挺感兴趣的。

    有6位网友表示赞同!

夏以乔木

Intel 的 QAT 听起来很酷,性能提升应该很大!

    有19位网友表示赞同!

你瞒我瞒

我一直都在想提高网络安全,这个解决方案感觉很有用!

    有16位网友表示赞同!

墨染年华

分享一下这篇文章链接吧,我想了解更多关于 QAT 的细节。

    有5位网友表示赞同!

箜篌引

学习学习,了解下这个TLS加速技术

    有17位网友表示赞同!

虚伪了的真心

最近在研究数据加密方法,这个文章看起来很值得参考。

    有18位网友表示赞同!

琴断朱弦

51CTO的资源一直很不错,这篇文章应该是比较专业的分析吧。

    有5位网友表示赞同!

十言i

不知道 QAT 能应用到哪些具体场景?

    有16位网友表示赞同!

命里缺他

看来加速技术未来会越来越重要了!

    有5位网友表示赞同!

抚涟i

希望文章能讲清楚这种技术的优缺点,方便我们更好地理解。

    有10位网友表示赞同!

素颜倾城

TLS 加速技术对于提升网络效率应该有很大帮助吧。

    有10位网友表示赞同!

∞◆暯小萱◆

这篇文章解决了 TLS 加速技术的哪些痛点?

    有17位网友表示赞同!

幸好是你

感觉这个 QAT 技术听起来很高科技!

    有11位网友表示赞同!

人心叵测i

能详细讲一下 QAT 的原理吗?

    有17位网友表示赞同!

断秋风

这种加速方法对安全性有哪些影响?

    有13位网友表示赞同!

爱到伤肺i

在使用 QAT 技术时需要注意事项?

    有13位网友表示赞同!

红尘滚滚

这个技术目前在哪些领域应用得比较广泛呢?

    有8位网友表示赞同!

慑人的傲气

我很好奇这个解决方案的成本怎么样?

    有11位网友表示赞同!

葵雨

未来会不会有更先进的 TLS 加速技术出现?

    有15位网友表示赞同!

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/6199.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666