ssl加速卡_OpenSSL异步模式与Intel QAT加速卡(一)

本文介绍了如何使用OpenSSL的异步模式结合Intel的QAT加速卡进行SSL解密,以提升高并发场景下的计算效率。通过Intel QAT Engine动态绑定RSA_METHOD,实现在OpenSSL中调用QAT的库API,利用QAT的硬件加速功能。文章详细解析了QAT Engine的注册、回调函数的设置以及如何在OpenSSL中配置和使用QAT Engine。
摘要由CSDN通过智能技术生成

这周工作遇到一个超越原先认知范围的问题,今天下午开始写这篇博文之前依然束手无策,但就刚刚被别部门给力的队友解决了!今天所写的技术都是出初步接触,所以如果有大神直接使用过OpenSSL的异步模式去对接QAT engine进行RSA解密或者gzip等密集计算的(尤其是多线程使用),跪求出来指点与指正~

一、问题综述

我们Workflow作为一个性能优异的异步调度框架,用作server可以对标的系统之一就是nginx这样的接入,而且与nginx的事件编程与形如http模块拆分11个阶段的这种反人类设计比起来,我们的任务概念是非常容易上手开发的。那么,nginx可以做的事情,我们都可以做吗?

那是必吁~的!

比如,这周遇到的一个用户场景:

OpenSSL的解密一旦遇到高并发接入,这种密集计算串行执行起来是非常慢的。但是业内一般都有更好的解决方案,以下是其中一种:首先,Intel有个QAT加速卡,可以作为外接设备进行密集计算的提速,因为其用于RSA解密比较多,所以Intel给它做了个对接于OpenSSL异步调度engine;

于是也需要异步操作OpenSSL。它提供了ASYNC_start_job的机制去获取一个job及注册回调函数(在开始后和结束时都会被调起,由使用者根据状态决定做什么行为),然后如果正在IO,状态就会变成PAUSE;并且你可以拿到fd,用你喜欢的方式去监听它。等这个PAUSE状态变回SUCCESS了,会通知你计算完成;

由于存在状态,因此我们需要在应用层保存上下文和监听fd和做具体读写,这就是nginx做的事情:nginx作为一个支持tls的server,Intel为其提供了框架的patch和模块去支持ssl的异步上下文和增删事件到epoll的步骤,具体的nginx模块也实现了读写事件回来之后的回调函数。

于是,nginx可以通过OpenSSL的异步模式调用QAT的加速卡从而实现异步高效高并发的解密计算。其实不止nginx,所有做接入的系统都应该做到这件事,比如阿里的Tengine等,当然也包括我们的Workflow。

这里涉及了三个层次,自底向上介绍一下各个层次吧,然后我们才能知道上层可以依赖下层做什么事情。

二、Intel QAT加速卡与QAT Engine

QAT加速卡全名是QuickAssist Technology,它在硬件层面实现了密集计算的并行优化,按层次看包括具体的设备(device)、内核态的驱动(driver)、用户态调用的库(library)、以及访问这个库的api、最后就是按照OpenSSL的接口封装了一个engine。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值