【Intel QAT】SYM类算法轮询回调过程分析

  本文分析的QAT源码版本为:QAT1.7.L.4.13.0-00009,源码下载地址为:https://01.org/intel-quickassist-technology,比较遗憾的是Intel并没有开放QAT源码的版本控制,一旦有新版本的QAT发布,老版本的QAT就下架了,再也找不到了。

  言归正传,本文主要从SYM回调函数的注册(初始化)及轮询响应等两个方面进行详细的分析。

1. 函数注册(初始化)

  在使用Engine+Lib(QAT)实现加解密的过程中,所涉及的主要函数如下:
  (1) Engine回调函数(执行加密操作的之前才会调用)
  (2) QAT回调函数(service初始化时调用)
  (3) QAT的ring响应函数(service初始化时调用)

1.1 Engine回调函数注册

  Engine通过调用QAT接口函数 cpaCySymInitSession() 将Engine的回调函数注册到QAT。如下图所示:
在这里插入图片描述  在函数cpaCySymInitSession()中进一步调用函数LacSym_InitSession(),并在该函数中实现了回调函数的注册,如下图所示。此时,Engine注册的回调函数就被保存在了Session的上下文中了,待回调的时候使用。
  至此,Engine的回调函数注册完成。
在这里插入图片描述

1.2 QAT回调函数注册

  在Engine调用函数 icp_sal_userStart() 进行server服务初始化的过程中调用LacSymCb_CallbacksRegister()实现了回调函数的初始化操作。
在这里插入图片描述
  如上图所示,LacSymQat_RespHandlerRegister() 是真正注册回调的函数接口,在注册回调函数的时候,根据当前的不同操作类型注册不同的回调函数(QAT注册的回调函数都是一样的);
在这里插入图片描述
  如上图所示,LacSymQat_RespHandlerRegister 将回调函数放在全局变量 respHandlerSymTbl[] 中,至此QAT的回调注册完成。

1.3 QAT响应函数注册

  Engine在调用函数 icp_sal_userStart() 进行server服务初始化的过程中调用 icp_adf_transCreateHandle() 实现了响应函数的注册。
  响应函数:LacSymQat_SymRespHandler(),通过全局变量respHandlerSymTbl[]与QAT的注册的回调函数联系起来。
在这里插入图片描述

2. 轮询

  轮询的入口函数是:icp_sal_CyPollInstance(),在该函数中调用了函数icp_adf_pollInstance(),紧接着调用了adf_pollRing(),最终底层真正轮询的函数为:adf_user_notify_msgs_poll(),该函数的实现如下所示:
在这里插入图片描述

3. 总结

  上面从“函数的注册”及“响应轮询”两个方面总结了轮询回调的主要实现过程,下图对轮询响应的全过程进行了初步的总结。
在这里插入图片描述

  服务(service)初始化:QAT回调函数的注册、Ring响应函数的注册;
  会话(session)初始化:Engine向QAT注册“引擎回调函数”,此过程是在加解密操作之前进行的;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenSSL QAT是指OpenSSL与英特尔快速加密技术(Intel QuickAssist Technology)的结合。通过将OpenSSLQAT驱动程序结合使用,可以加速SSL/TLS协议的性能。在配置OpenSSL QAT时,通常需要设置一些参数。 引用中提到了一个设置OpenSSL QAT安装目录的参数`--with-openssl_install_dir=/root/openssl-1.1.1b/.openssl`。这个参数指定了OpenSSL的安装目录,也就是QAT驱动程序的安装路径。 引用中提到了一个设置OpenSSL配置文件路径的参数`export OPENSSL_CONF=/root/openssl-1.1.1b/.openssl/ssl/openssl.cnf`。这个参数指定了OpenSSL的配置文件路径,其中包含了QAT驱动程序的配置信息。 通过配置好这些参数,可以使OpenSSL能够正确使用QAT驱动程序,从而提高SSL/TLS协议的性能。 除了配置参数,还可以通过对比不同的实现方式来评估OpenSSL QAT的性能。引用提到了针对TLS1.2 RSA卸载的例子,比较了普通的OpenSSL、同步QAT OpenSSL和异步QAT OpenSSL的每秒连接数。这个比较可以帮助我们了解QAT加速对性能的影响。 总之,OpenSSL QAT是通过将OpenSSL与英特尔快速加密技术结合使用,来提高SSL/TLS协议的性能的。配置OpenSSL QAT需要设置安装目录和配置文件路径,并可以通过比较不同实现方式来评估性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [nginx 异步openssl Intel QAT硬件加速方案](https://blog.csdn.net/realmardrid/article/details/117456917)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值